我有一个区别的联合类型,它根据字符串文字字段区分类型 . 我想派生一个映射类型,它将联合中的所有类型映射到它们对应的鉴别器文字值 .
例如
export type Fetch = {
type: 'fetch',
dataType: string
};
export type Fetched<T> = {
type: 'fetched',
value: T
};
// union type discriminated on 'type' property
export type Action =
| Fetch
| Fetched<Product>;
// This produces a type 'fetch' | 'fetched'
// from the type
type Actions = Action['type'];
// I want to produce a map type of the discriminator values to the types
// comprising the union type but in an automated fashion similar to how I
// derived my Actions type.
// e.g.
type WhatIWant = {
fetch: Fetch,
fetched: Fetched<Product>
}
这在TypeScript中是否可行?
1 回答
通过在TypeScript 2.8中引入conditional types,您可以定义一个类型函数,给定一个有区别的联合以及判别式的键和值,它会产生联合的单个相关成分:
如果您想使用它来构建 Map ,您也可以这样做:
所以在你的情况下,
如果你检查它,它是:
我认为,按照需要 . 希望有所帮助;祝好运!