我是TypeScript(版本1.8.10)的新手。我有这个代码;
interface SomeInterface {
label: string;
}
function interfaceTester(arg: SomeInterface){
console.log("This is the interface tester's argument : ", arg.label);
}
//working
interfaceTester({label:"Label value alone"});
但是,当我尝试使用附加参数的代码时,
interfaceTester({someOneElse: 45, label:"Label value with one extra argument;"});
无法正常工作;它抛出编译错误;
相反,当我以这种方式尝试相同的(我相信)时:
let obj = {someOneElse: 45, label:"Label value with one extra argument;" };
interfaceTester(obj);
工作正常;我可以编译并执行它。
我做错了吗?有人可以帮忙吗?
答案 0 :(得分:2)
let obj = {someOneElse: 45, label:"Label value with one extra argument;" };
虽然构建编译器将obj视为任何类型而非特定类型的接口(SomeInterface)。这假定编译器将变量视为动态变量。
要限制此项,您应指定数据类型。
let obj: SomeInterface = { someOneElse: 45, label: "Label value with one extra argument;" };
这将给出构建错误。
答案 1 :(得分:0)