这是我的问题:
我有一个实现接口的类。方法greet应该有返回类型void
但是在我实现的类中它有string
并且编译器没有警告我。和IDE都没有(我使用的是PhpStorm)。
我错过了什么或是故意的吗?
interface Person {
sex: string;
greet() : void;
}
class Boy implements Person {
sex: 'M';
greet() {
return this.sex;
}
}
我使用的是Typescript 2.0.10
答案 0 :(得分:2)
它不会抱怨,因为它并不重要。
您的接口声明该方法返回void
,如果您的实现返回值,则不会发生任何伤害
例如:
let person: Person = new Boy();
person.greet();
由于person
的类型为Person
(而不是Boy
),因此greet
方法不会返回值,事实上我并不是想使用返回值。
另一方面,如果恰恰相反:
interface Person {
sex: string;
greet(): string;
}
class Boy implements Person {
sex: 'M';
greet(): void {}
}
然后抛出错误:
Class'Boy'错误地实现了界面'Person' 财产'问候'的类型是不相容的 输入'()=> void'不能分配给'()=>类型字符串”。
类型'void'不能分配给'string'类型。