TS中严格的对象属性检查

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

如果您觉得本文对您有用,欢迎捐赠或留言~
微信支付
支付宝

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注