小编RJM*_*RJM的帖子

Typescript不检查接口声明的函数参数类型

在编译下面的代码时,我期待两个错误,但typescript编译它没有任何错误.

interface IFoo{
    Bar(callback: (arg:string) => void):void;
}

class Foo implements IFoo {
    public Bar(callback: () => void):void{
        callback();
    }
}

var foo: IFoo;
foo = new Foo();
foo.Bar(() => {
    console.log("Hi");
})
Run Code Online (Sandbox Code Playgroud)

预期错误1:IFoo.Bar需要一个函数参数,该参数本身采用字符串参数.但是,当Foo实现IFoo时,Foo.Bar被声明为带有NO参数的函数参数.我希望这是一个类型错误.

预期错误2:foo的类型为IFoo.使用函数参数调用foo.Bar,该函数参数不带参数,这与IFoo中Bar的定义相反.我希望这是一个类型错误.

因此,在声明接口方法的具体实现时,以及在调用接口方法时,似乎都没有强制执行函数签名的类型.

很明显,我误解了typescript如何处理接口声明的函数参数的类型检查.有人可以解释为什么这个编译没有错误?

typescript

7
推荐指数
1
解决办法
1425
查看次数

标签 统计

typescript ×1