背景
在 TypeScript 中,存在一种非常常见的类型,就是 nullable types,也就是允许变量为空的类型。例如:
let name: string | null; name = null; name = 'Tom';
然而,在某些情况下,我们希望变量不允许为空。例如,在某些函数中,我们希望传入的参数不能为空:
function printName(name: string) { console.log(name); }
在这个函数中,如果传入的 name
参数为空,就会报错。那么如何解决这种情况呢?
非空类型
TypeScript 提供了一种叫做 non-null types 的类型,可以表示一个变量不允许为空。例如:
let name: string; name = null; // 报错 name = 'Tom';
在这个例子中,如果试图将 name
赋值为 null
,就会报错。
如何使用非空类型
一般来说,我们可以将变量的类型声明为 Type | null
的形式,然后将它转换为 Type
类型。例如:
-- -------------------- ---- ------- --- ----- ------ - ---- - ----- ---- - ------ -------- --------------- ------ - ----- - ------------------ - ----------------- -- -- ----- ---------------- -- --
在这个例子中,我们先将 name
的类型声明为 string | null
,然后在实际使用时将它转换为 string
类型。这样,在调用函数时就可以判断参数是否为空。
非空断言运算符
另外,在某些情况下,我们已经知道一个变量不会为空,但是 TypeScript 无法判断它不为空,这时我们可以使用非空断言运算符 !
来告诉 TypeScript,这个变量不会为空。例如:
let name: string | null = null; name = 'Tom'; let fullName = name!.toUpperCase(); // 不会报错,因为我们知道 name 不为空
在这个例子中,我们知道 name
不为空,所以可以使用非空断言运算符 !
来转换它的类型为 string
。当然,如果 name
实际上是 null
,就会抛出一个运行时异常。
总结
在 TypeScript 中,我们可以使用非空类型来表示一个变量不允许为空。一般来说,我们将变量的类型声明为 Type | null
的形式,然后在实际使用时将它转换为 Type
类型。另外,如果我们已经知道一个变量不会为空,可以使用非空断言运算符 !
来告诉 TypeScript,这个变量不会为空。这些技巧可以帮助我们更好地使用 TypeScript,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b21a1648841e9894e6a8cf