类类型接口不强制执行函数参数类型

时间:2016-04-20 16:12:59

标签: class interface typescript

我有一个实现接口的简单类:

interface IDevice {
     electronic: boolean;
     ergonomic: boolean;
     powerOn(param1:string): boolean;
}

class ComputerMouse implements IDevice {
     electronic = true;
     ergonomic = false;

     powerOn(param1) {
         return true;
     }
}

var mouse = new ComputerMouse();
mouse.powerOn(true);

powerOn()在接口中键入为字符串时,我可以将布尔值传递给param1。这不应该导致类型错误吗?

如果我指定param1是布尔值我正确地得到编译器错误,因为ComputerMouse powerOn()的实现需要匹配接口。

class ComputerMouse implements IDevice {
 electronic = true;
 ergonomic = false;

 powerOn(param1:boolean) {
     return true;
 }
}

这是打算还是我错过了什么?

1 个答案:

答案 0 :(得分:1)

似乎这种情况正在发生,因为已实现的属性不是在上下文中键入的: https://github.com/Microsoft/TypeScript/issues/1373

路上有一个修复方法: https://github.com/Microsoft/TypeScript/pull/6118