从类型获取通用类型

时间:2018-11-27 14:12:02

标签: typescript

可以从Promise类型中检索泛型类型吗?

例如,以下类型:

type Example = Promise<boolean>;

是否可以将通用类型boolean提取为其自己的类型?例如:

type BooleanPromise = Promise<boolean>;
type Value = genericsof Example[0]; // boolean

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用条件类型从通用类型实例中提取通用类型参数:

type Example = Promise<boolean>;

type BooleanPromise = Promise<boolean>;
type Value = BooleanPromise extends Promise<infer V> ? V : never // boolean

您甚至可以创建一个泛型类型,以从任何Promise实例中提取参数:

type PromiseValue<T> = T extends Promise<infer V> ? V : never 
type Value2 = PromiseValue<BooleanPromise>

您可以了解有关条件类型here

的更多信息

答案 1 :(得分:0)

a,a2是布尔值

import { ITSResolvable, ITSUnpacked } from 'ts-type';

export type Example = Promise<boolean>;

export type ValueTypeOfExample = ITSUnpacked<Example>;

let a: ValueTypeOfExample;

a = true;

// @ts-ignore err when without @ts-ignore
a = 0;
// @ts-ignore err when without @ts-ignore
a = '';