这里为何定义类型为 `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
子站问答
访问
宣传栏