名义化类型

    这有一些社区推荐的方式,我按照个人爱好降序排列:

    • 缺点
      • 如上结构 可能不那么尽如人意,而且需要服务器序列化支持。

    TypeScript 中枚举 提供一定程度的名义化类型。如果两个枚举的命名不相同,则它们类型不相等。我们可以利用这个事实来为结构上兼容的类型,提供名义化类型。

    • 利用这个枚举与实际结构体创建一个交叉类型(&)。
      如下所示,当实际结构体仅仅是一个字符串时:

    因为 类型与 enum 类型在类型上是兼容的,因此我们不能使用上述提到的方法来处理它们。取而代之,我们可以使用接口打破这种类型的兼容性。TypeScript 编译团队仍然在使用这种方法,因此它值得一提。使用 前缀和 Brand 后缀是一种我强烈推荐的惯例方法()。

    • 在类型上添加一个不用的属性,用来打破类型兼容性;
    • 在需要的时候使用类型断言。
      如下所示: