TypeScript 2.0的联合类型如何改写成长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2343个文字,预计阅读时间需要10分钟。
目录+使用标记的联合类型构建支付方式+使用标记联合类型构建+Redux 操作+never 类型+永不返回的函数+不可能有该类型的变量+never 和 void 之间的区别+函数声明类型推断+使用标记的联合
目录
- 使用标记的联合类型构建付款方式
- 使用标记联合类型构建 Redux 操作
- never 类型
- 永不返回的函数
- 不可能有该类型的变量
- never 和 void 之间的区别
- 函数声明的类型推断
使用标记的联合类型构建付款方式
假设咱们为系统用户可以选择的以下支付方式建模
- Cash (现金)
- PayPal 与给定的电子邮件地址
- Credit card 带有给定卡号和安全码
对于这些支付方法,咱们可以创建一个 TypeScript 接口
interface Cash { kind: "cash"; } interface PayPal { kind: "paypal", email: string; } interface CreditCard { kind: "credit"; cardNumber: string; securityCode: string; }
注意,除了必需的信息外,每种类型都有一个kind属性,即所谓的判别属性。这里每种情况都是字符串字面量类型。
现在定义一个PaymentMethod类型,它是我们刚才定义的三种类型的并集。
本文共计2343个文字,预计阅读时间需要10分钟。
目录+使用标记的联合类型构建支付方式+使用标记联合类型构建+Redux 操作+never 类型+永不返回的函数+不可能有该类型的变量+never 和 void 之间的区别+函数声明类型推断+使用标记的联合
目录
- 使用标记的联合类型构建付款方式
- 使用标记联合类型构建 Redux 操作
- never 类型
- 永不返回的函数
- 不可能有该类型的变量
- never 和 void 之间的区别
- 函数声明的类型推断
使用标记的联合类型构建付款方式
假设咱们为系统用户可以选择的以下支付方式建模
- Cash (现金)
- PayPal 与给定的电子邮件地址
- Credit card 带有给定卡号和安全码
对于这些支付方法,咱们可以创建一个 TypeScript 接口
interface Cash { kind: "cash"; } interface PayPal { kind: "paypal", email: string; } interface CreditCard { kind: "credit"; cardNumber: string; securityCode: string; }
注意,除了必需的信息外,每种类型都有一个kind属性,即所谓的判别属性。这里每种情况都是字符串字面量类型。
现在定义一个PaymentMethod类型,它是我们刚才定义的三种类型的并集。

