【发布时间】:2016-08-13 11:17:37
【问题描述】:
我有一个实现接口的简单类:
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);
当param1 在界面中输入为字符串时,我可以将布尔值传递给powerOn()。这不应该导致类型错误吗?
如果我指定param1 是一个布尔值,我会得到一个编译器错误,因为ComputerMouse 的powerOn() 实现需要匹配接口。
class ComputerMouse implements IDevice {
electronic = true;
ergonomic = false;
powerOn(param1:boolean) {
return true;
}
}
这是有意为之还是我遗漏了什么?
【问题讨论】:
-
如果您将类中函数的签名更改为:
powerOn(param1:string),您将收到mouse.powerOn(true)的错误,但我不确定为什么没有它它不会抱怨 -
是的,我想弄清楚为什么没有它它不会抱怨。好像不应该这样
-
@NitzanTomer 似乎是因为 TypeScript 不支持实现属性的上下文类型。查看下面的链接
标签: class interface typescript