可以从Promise
类型中检索泛型类型吗?
例如,以下类型:
type Example = Promise<boolean>;
是否可以将通用类型boolean
提取为其自己的类型?例如:
type BooleanPromise = Promise<boolean>;
type Value = genericsof Example[0]; // boolean
感谢您的帮助。
答案 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 = '';