typescript Eslint没有抱怨使用spread运算符时不存在的属性

bfnvny8b  于 2023-03-24  发布在  TypeScript
关注(0)|答案(1)|浏览(94)

我有一个问题,当在Typescript中使用spread运算符时,Eslint不会抱怨您更改的属性不存在。一个简单的例子如下:

interface Car {
    name: string,
    price: number
}

const redCar = <Car>{ name: 'redCar', price: 25.000 };
const changePrice = <Car>{ ...redCar, pric: 20.000 };

在上面的例子中,当你将price赋值给redCar时,Eslint会抱怨你输入的price不正确,但是当使用spreadOperator时,它不会抱怨price不存在。我知道你可以做以下事情:

interface Car {
    name: string,
    price: number
}
    
const redCar: Car = { name: 'redCar', price: 25.000 };
const changePrice: Car = { ...redCar, pric: 20.000 };

但我并不是每次都在调整对象内部的变量时创建变量(例如使用map时)。在Eslint中是否需要启用某个规则来防止此类错误发生?

bhmjp9jg

bhmjp9jg1#

如果你想防止多余的属性,你可以使用从TS 4.9开始提供的satifies

interface Car {
    name: string,
    price: number
}

const redCar = { name: 'redCar', price: 25.000 } satisfies Car;
const changePrice = { ...redCar, pric: 20.000 } satisfies Car;

console.log(changePrice);

Playground

相关问题