Typescript 函数体返回带有承诺签名的未定义编译
我希望这个函数会给出一个编译器错误,但它不会。函数体可以返回未定义的,但类型签名并没有声明这一点Typescript 函数体返回带有承诺签名的未定义编译,typescript,Typescript,我希望这个函数会给出一个编译器错误,但它不会。函数体可以返回未定义的,但类型签名并没有声明这一点 async function chat(_: at.ChatLine): Promise<Array<tot.PlayStateAction>> { return lastMover?.chat(_); } 您需要在tsconfig.json中启用strictNullChecks。 另外,lastMover的类型声明或推断的类型必须包含null和/或unde
async function chat(_: at.ChatLine): Promise<Array<tot.PlayStateAction>> {
return lastMover?.chat(_);
}
您需要在
tsconfig.json
中启用strictNullChecks
。
另外,lastMover
的类型声明或推断的类型必须包含null
和/或undefined
。我可以用这个复制:
let lastMover: LastMover | undefined | null;
然后您将获得以下异常:
类型“XXX[]|未定义”不可分配给类型“XXX[]”。类型“未定义”不可分配给类型“XXX[]” (在您的情况下,其中XXX将是
tot.PlayStateAction
)
旁注:出于某种原因,尽管文档说
strict
应该自动启用strictNullChecks
,但它在TS游乐场中不会这样做(-uncheckstrictNullChecks
,您将不会得到错误)。如果删除,会发生什么情况?
?
let lastMover: LastMover | undefined | null;