gpt4 book ai didi

javascript - Typescript 编译器不检查方法返回类型的有效性

转载 作者:行者123 更新时间:2023-11-30 15:40:30 25 4
gpt4 key购买 nike

这是我的问题:我有一个实现接口(interface)的类。方法 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

最佳答案

它不会提示,因为它真的不重要。
您的接口(interface)声明该方法返回 void,如果您的实现返回一个值,则不会发生任何伤害。
示例:

let person: Person = new Boy();
person.greet();

因为 personPerson 类型(而不是 Boy),所以 greet 方法不会返回一个值,实际上我并没有尝试使用返回值。

反之:

interface Person {
sex: string;
greet(): string;
}

class Boy implements Person {
sex: 'M';
greet(): void {}
}

然后抛出一个错误:

Class 'Boy' incorrectly implements interface 'Person'.
Types of property 'greet' are incompatible.
Type '() => void' is not assignable to type '() => string'.
Type 'void' is not assignable to type 'string'.

关于javascript - Typescript 编译器不检查方法返回类型的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40913535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com