我使用TypeScript版本2.3.4。我想编写一个接受必须具有指定字段的对象的函数。但是这个对象不应该包含任何其他字段。我怎样才能做到这一点?TypeScript严格的类/接口
现在这只适用于我定义对象内联。但是,如果我使用额外字段的另一个对象 - 编译器将允许它。什么是完全错误的。
实施例:
function foo(arg: { a: string }) { // there is tons of fields actually
// ...
}
foo ({a: "qwerty"}); // No Error - ok
foo ({a: "qwerty", b: 123}); // Error - ok
let bar = {
a: "qwerty",
b: 123
};
foo (bar); // No Error - NOT OK !!!
相同的代码可与接口,类类型声明来所著 - 这是同样的问题。
现在我必须手动从对象中提取字段,以确保没有额外的字段。但是我不能在整个代码中将这个解决方案传播给1000个函数(我真的需要这个) - 这太乱了。我创建API包装,我需要确保没有传递给服务器的额外或错误的字段。
看起来像是故意的。请参阅[此问题](https://github.com/Microsoft/TypeScript/issues/13444)和[this](https://github.com/Microsoft/TypeScript/issues/3755)以获取更多讨论。 – Saravana
Saravana,是的,我读过这篇文章,但在这些讨论中没有回答我的问题。我认为避免接口的严格性会更好,但将其留给班级。 –