【发布时间】:2022-01-01 01:48:53
【问题描述】:
我正在 Typescript 游乐场中尝试两个不同的类,它们实现了相同的接口。我不明白为什么接口中返回类型为void 的方法speak() 不会触发错误,如果它的实现返回的不是void。
我必须用返回类型void 显式实现该方法来触发类型检查。对于void 以外的返回类型似乎不会发生这种情况,如下所示。
Snippet in Typescript Playground
interface Person {
speak(): void;
walk(): number;
}
export class HumanOne implements Person {
speak() {
return 'Hello'; // No type error
}
walk() { // Type error
return 'Walking';
}
}
export class HumanTwo implements Person {
speak(): void {
return 'Hello'; // Type error
}
walk(): number {
return 'Walking'; // Type error
}
}
【问题讨论】:
-
void表示不会使用函数返回的类型(类型会被忽略),参见callback types上的指南 -
“返回类型为 void 的上下文类型不会强制函数不返回某些内容。”详情请见this doc。
标签: javascript typescript