开发者问题收集

在 Typescript 中字符串可以为空或者未定义吗?

2020-06-18
508

给定以下函数原型:

function get(): string { /*.../* } 

此函数可以返回 nullundefined 吗?或者只能返回其中之一?我尝试了解应应用哪些检查来检查函数返回类型的有效性

2个回答

这取决于您的 compilerOptions 。准确地说,是 strictNullChecks 标志。

strictNullChecks: false

function get(): string {
  return null; // ok
}

function get(): string {
  return undefined; // ok
}

在这种情况下,您需要对 nullundefined 进行额外检查。

strictNullChecks: true

返回值 必须 string 类型。不允许使用 nullundefined 。无需进行额外检查。

function get(): string {
  return null; // Compile-time error
}

function get(): string {
  return undefined; // Compile-time error
}

检查您的 tsconfig.json 并按您喜欢的方式设置 compilerOptions.strictNullChecks

Karol Majewski
2020-06-18

不可以,此函数只能返回字符串。

如果需要,您必须设置其他类型:

function get(): string | undefined | null {/*....*/ } 

或者,如果您只想返回字符串,则必须检查额外的条件。

BeHappy
2020-06-18