TypeScript中Nominal Typing如何深入理解与应用?

2026-06-10 07:290阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1308个文字,预计阅读时间需要6分钟。

TypeScript中Nominal Typing如何深入理解与应用?

目录 + 名义类型(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,因为本质上Vector3DVector2D的子集。

阅读全文

本文共计1308个文字,预计阅读时间需要6分钟。

TypeScript中Nominal Typing如何深入理解与应用?

目录 + 名义类型(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,因为本质上Vector3DVector2D的子集。

阅读全文