这里为何定义类型为 `Nilable<T> `而不使用`Nilable`?

我在看到一个代码中这样定义一个类型:

export type Nilable<T> = T | null | undefined

我有几个问题:

  1. typescript中T不能包含代表null 和 undefined是吗?
  2. T是包含typescript的除了null 和 undefined 的所有的类型是吗?
  3. 这里为何定义类型为 Nilable<T> 而不使用Nilable
阅读 1.2k
1 个回答

1T可以指代任何类型,包括null,undefined
2 同1
3 见名知意,Nilable意为可无,也就是说符合这个类型的值都可能为空,如:
var a: Nilable<number> = 1
意思就是a这个变量可能为number|null|undefined,这样做可以在使用变量时明确其可能为空,从而做一些非空判断,避免类似于java里空指针异常出现;因为是为了将一个变量声明为可空,所以这里需要一个泛型T来保留非空类型,你也可以写死type Nilable = number | null | undefined;泛型的意义就如同函数封装一样,这里的类型不需要写死,通过参数T传入就行,这样类型定义就可以复用

推荐问题
logo
Microsoft
子站问答
访问
宣传栏