从两个可区分的联合创建矩阵类型
Create matrix type from two discriminated unions
我在 TypeScript 中有两个可区分的联合:
type Person = "alice" | "bob"
type Number = 1 | 2
从这两个可区分的联合中,如何从所有可能的组合中创建一个新的可区分的联合:
type Desired = "alice-1" | "bob-1" | "alice-2" | "bob-2"
理想情况下 Desired
不是硬编码的,因为 Person
和 Number
可能会变得相当大。如果需要,Number
可以是字符串联合 "1" | "2"
.
您可以只应用模板文字类型,您将获得所需的类型:
type Person = "alice" | "bob"
type Number = 1 | 2
type Desired = `${Person}-${Number}`
此功能自 4.1 起在 Typescript 中可用,并添加了 Template literal types and mapped type 'as' clauses
我在 TypeScript 中有两个可区分的联合:
type Person = "alice" | "bob"
type Number = 1 | 2
从这两个可区分的联合中,如何从所有可能的组合中创建一个新的可区分的联合:
type Desired = "alice-1" | "bob-1" | "alice-2" | "bob-2"
理想情况下 Desired
不是硬编码的,因为 Person
和 Number
可能会变得相当大。如果需要,Number
可以是字符串联合 "1" | "2"
.
您可以只应用模板文字类型,您将获得所需的类型:
type Person = "alice" | "bob"
type Number = 1 | 2
type Desired = `${Person}-${Number}`
此功能自 4.1 起在 Typescript 中可用,并添加了 Template literal types and mapped type 'as' clauses