如何深入理解TypeScript中的Nominal Typing(名义类型)及其实用技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1306个文字,预计阅读时间需要6分钟。
目录 + Nominal Typing(名义类型) + 概念解析 + 发展应用 + 在Vue中的应用Nominal Typing(名义类型) + 概念解析 + 意义是给一个类型附加一个名称,从而防止结构类型在某些情况下因类型结构变化而出现问题。
目录
- Nominal Typing(名义类型)
- 概念解析
- 拓展应用
- 在Vue中的应用
Nominal Typing(名义类型)
概念解析
意思是给一个类型附加上一个“名义”,从而防止结构类型在某些情况下由于类型结构相似而被错用。假设有如下代码:
interface Vector2D { x: number, y: number }; interface Vector3D { x: number, y: number, z: number }; function calc(vector: Vector2D): void; const vector: Vector3D = { x: 1, y: 1, z: 1} calc(vector) // 并没有抛出错误
看上去calc()函数应该只能传入Vector2D类型,但其实也可以传入Vector3D,因为本质上Vector3D是Vector2D的子集。
本文共计1306个文字,预计阅读时间需要6分钟。
目录 + Nominal Typing(名义类型) + 概念解析 + 发展应用 + 在Vue中的应用Nominal Typing(名义类型) + 概念解析 + 意义是给一个类型附加一个名称,从而防止结构类型在某些情况下因类型结构变化而出现问题。
目录
- Nominal Typing(名义类型)
- 概念解析
- 拓展应用
- 在Vue中的应用
Nominal Typing(名义类型)
概念解析
意思是给一个类型附加上一个“名义”,从而防止结构类型在某些情况下由于类型结构相似而被错用。假设有如下代码:
interface Vector2D { x: number, y: number }; interface Vector3D { x: number, y: number, z: number }; function calc(vector: Vector2D): void; const vector: Vector3D = { x: 1, y: 1, z: 1} calc(vector) // 并没有抛出错误
看上去calc()函数应该只能传入Vector2D类型,但其实也可以传入Vector3D,因为本质上Vector3D是Vector2D的子集。

