Typescript 将接口作为参数传递时出现问题
我不熟悉打字脚本(1.8.10版)。我有这个密码Typescript 将接口作为参数传递时出现问题,typescript,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"
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);
工作正常;我可以编译并执行它
我做错什么了吗?有人能帮忙吗?这是预期的行为。您可以使用强制转换来解决此问题:
interfaceTester(<SomeInterface>{someOneElse: 45, label:"Label value with one extra argument;"});
interfaceTester({someonether:45,label:“label value with one-extra-argument;”});
您可以找到有关它为何以这种方式工作的文档。这是预期的行为。您可以使用强制转换来解决此问题:
interfaceTester(<SomeInterface>{someOneElse: 45, label:"Label value with one extra argument;"});
interfaceTester({someonether:45,label:“label value with one-extra-argument;”});
您可以找到有关它为何以这种方式工作的文档
在构建时,编译器将obj视为接口(SomeInterface)的类型any。这假设编译器将变量视为动态变量
要限制此操作,应指定数据类型
let obj: SomeInterface = { someOneElse: 45, label: "Label value with one extra argument;" };
这将导致生成错误
在构建时,编译器将obj视为接口(SomeInterface)的类型any。这假设编译器将变量视为动态变量
要限制此操作,应指定数据类型
let obj: SomeInterface = { someOneElse: 45, label: "Label value with one extra argument;" };
这将导致生成错误 谢谢你的回答,效果很好。但我仍然感到困惑的是,在这两种情况下(工作或不工作),我都没有指定任何关于接口的内容(
SomeInterface
)。唯一的区别是,在工作情况下,它被分配给一个变量。那么编译器是如何知道这个(SomeInterface
)接口的呢?谢谢你的回答,这很好。但我仍然感到困惑的是,在这两种情况下(工作或不工作),我都没有指定任何关于接口的内容(SomeInterface
)。唯一的区别是,在工作情况下,它被分配给一个变量。那么编译器是如何知道这个(SomeInterface
)接口的呢?