繁体   English   中英

打字稿忽略 null 或 undefined 作为函数返回的可能性

[英]Typescript is ignoring null or undefined as function return possibility

我有一个函数,它应该返回 LoginResponse 类型或 null,但 Typescript lint 忽略了 null 的可能性,只是将 LoginResponse 显示为可能的值。

export const getSession = (): LoginResponse | null => {
  return null
}

在此处输入图片说明

我也尝试使用 undefined 没有成功。 有什么想法吗?

TLDR;

tsconfig.json:

{
  "compilerOptions": {
    "strict": true
  }
}

命令行: tsc --strict

默认情况下,TypeScript 将nullundefined视为其他类型的所有类型的子类型。 也就是说,一切都是可以为空的,也可以不定义。

给定两种类型, BaseSub ,其中Sub extends Base ,它们的并集Base | Sub Base | Sub ,相当于Base 因此,由于null是所有类型的子类型,因此它是LoginResponse的子类型,使得LoginResponse | null LoginResponse | null相当于LoginResponse

要让 TypeScript 将nullundefined视为不同的类型,与所有其他类型无关,您需要启用--strictNullChecks ,这是一个强大的 TypeChecking 选项。

配置文件

{
  "compilerOptions": {
    "strictNullChecks": true
  }
}

或者,在命令行上, tsc --strictNullChecks.

--strictNullChecks选项是强大的类型检查选项的严格系列的一部分,因此我们可以使用--strict ,启用所有强烈推荐的选项,不仅仅是因为它捕获更多错误并为这些错误提供更多语义,而是因为它显着提高了类型推断的质量,使许多应该直观地工作的代码实际上工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM