我使用TypeScript版本2.3.4。我想编写一个接受必须具有指定字段的对象的函数。但是该对象不应包含任何其他字段。我该如何实现这一点?
现在,只有在我内联定义对象时才能正常工作。但是如果我使用具有额外字段的另一个对象-编译器将允许它。这是完全错误的。
例子:
现在,只有在我内联定义对象时才能正常工作。但是如果我使用具有额外字段的另一个对象-编译器将允许它。这是完全错误的。
例子:
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包装器,并且需要确保没有传递额外或错误的字段到服务器。