ts 会对对象字面量进行严格的属性检查,以保证属性能够正确传递。所以,当一个属性以对象字面量的形式传递时,如果传递了不存在的属性,编译器将会报错。
例如如下代码
function printName(person: { name: string }) {
console.log(person.name);
}
printName({ name: "leevare" });
// 错误,对象字面量只能指定已知属性,而age并不存在
printName({ name: "leevare", age: 24 });
如果想传递多个属性时,可以使用变量的形式,如下
const person = { name: "leevare", age: 24 };
printName(person);
这里不会报错,之所以只对对象字面量进行类型检查,因为在这种情况下,那些实际上并没有被使用到的属性有可能会拼写错误或者会被误用。
相关概念:https://github.com/Microsoft/TypeScript/pull/3823
如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!
如无特殊声明,文章均为原创,若有不正之处,万望告知。转载请附上原文地址,十分感谢!