如何深入理解TypeScript中的Nominal Typing(名义类型)及其实用技巧?

2026-04-02 07:270阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1306个文字,预计阅读时间需要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的子集。

阅读全文

本文共计1306个文字,预计阅读时间需要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的子集。

阅读全文