我在看到一个代码中这样定义一个类型:
export type Nilable<T> = T | null | undefined
我有几个问题:
- typescript中T不能包含代表null 和 undefined是吗?
- T是包含typescript的除了null 和 undefined 的所有的类型是吗?
- 这里为何定义类型为
Nilable<T>
而不使用Nilable
?
我在看到一个代码中这样定义一个类型:
export type Nilable<T> = T | null | undefined
我有几个问题:
Nilable<T>
而不使用Nilable
?8 回答4.9k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
6 回答2.5k 阅读
5 回答6.5k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
1
T
可以指代任何类型,包括null
,undefined
;2 同1
3 见名知意,
Nilable
意为可无,也就是说符合这个类型的值都可能为空,如:var a: Nilable<number> = 1
意思就是
a
这个变量可能为number|null|undefined
,这样做可以在使用变量时明确其可能为空,从而做一些非空判断,避免类似于java
里空指针异常出现;因为是为了将一个变量声明为可空,所以这里需要一个泛型T
来保留非空类型,你也可以写死type Nilable = number | null | undefined
;泛型的意义就如同函数封装一样,这里的类型不需要写死,通过参数T
传入就行,这样类型定义就可以复用