为什么下面的代码表现得像?它是TypeScript编译器中的错误还是缺少的功能?
class MyType {
constructor(public readonly value1: string, public readonly value2: number) {
}
}
function myFunction(props: Partial<MyType>): void {
// Do something here
}
myFunction({ }); // Compiles
myFunction({ value1: 'string', value2: 42 }); // Compiles
myFunction({ wrongValue: true }); // Compile error!!
const myValue1 = {};
const myValue2 = { value1: 'string', value2: 42 };
const myValue3 = { wrongValue: true };
myFunction(myValue1); // Compiles
myFunction(myValue2); // Compiles
myFunction(myValue3); // Compiles, but why?!? I expected this not to compile!
我使用的是TypeScript版本2.1.6
答案 0 :(得分:2)
您要求的是确切类型,跟踪here。
目前,TypeScript仅检查对象文字的过多对象键,主要用于拼写错误。将对象绑定到变量后,TypeScript将不会检查过多的键。
部分有效地将可选标记添加到班级的字段中。
因此,它不会报告myValue3
的错误。