我正在阅读Typescript手册,在接口章节中,我发现了一个问题:
interface LabelledValue {
label: string;
}
function printLabel(labelledObj: LabelledValue) {
console.log(labelledObj.label);
}
let myObj = {size: 10, label: "Size 10 Object"};
printLabel(myObj);
printLabel
需要一个带有label:string
属性的对象,但我们传递的对象有另一个名为size
的属性。这是可以的,因为编译器只检查至少存在并匹配所需类型的属性。但是,当我以这种方式调用
printLabel
:printLabel({size: 10, label: "Size 10 Object"});
编译出现异常。为什么会这样?
object literal may only specify known properties
),你会找到答案:https://dev59.com/SlwZ5IYBdhLWcg3wIdR7 或者 https://dev59.com/Eo_ea4cB1Zd3GeqPRrBG - Nitzan Tomer