打字稿界面不检查方法参数?

时间:2018-01-02 21:28:29

标签: typescript

interface optionsParameter { 
     url: string;

} 

function DEC(options: optionsParameter){ } 
DEC(2) //typescript check compilation error

let obj:any = {
   name: "Hello"
}

obj.DEC = function(options: optionsParameter){}

obj.DEC(1); // no compilation error thrown

我希望obj.DEC方法根据指定的接口进行类型检查,但事实并非如此。

似乎只有常规函数声明或表达式工作,而不是作为方法在对象内部。

1 个答案:

答案 0 :(得分:0)

obj定义为空对象时

let obj = {
}

不允许使用以下行

obj.DEC = function(options: optionsParameter){}

因为您已将obj定义为没有属性的对象。这就是为什么后续行不能按预期进行类型检查的原因。

但是,如果您将obj定义为具有DEC函数的对象,则类型检查将按预期工作:

let obj = {
    DEC: function(options: optionsParameter){}
}