【发布时间】:2021-05-10 17:34:16
【问题描述】:
如何从泛型类型中提取“上层类型”,并用它来包装另一个泛型参数?例如:
type Cont<C, T> = ...
let a: Cont<Promise<number>, string>;
// add string to number put in Promise<...>
// Promise<number, *> <---- string
// Promise<number | string>
//
// a should be of type Promise<number|string>
let b: Cont<[string], boolean>;
// add boolean to string put in Array<...>
// Array<string, *> <---- boolean
// Array<string | boolean>
//
// b should be of type Array<string|boolean> i.e. (string|boolean)[]
经过数小时的推理,我完全放弃了。
【问题讨论】:
-
不知道您是否想要,但检查一次。 typescriptlang.org/play?#code/…
-
不,不是这样
-
[string]是指string[]吗?它们是不同的类型。我假设你的意思是string[]。 TypeScript 的类型系统是结构化的,而不是名义上的;您用于类型的名称无关紧要。因此,Promise<number>或Array<string>或Foo<Bar>没有任何东西可用于从中提取number或string或Bar。除非您想枚举Cont可以处理的案例列表(例如,Promise和Array,但仅此而已),您不能这样做。到底有什么用例?
标签: typescript type-inference typescript-generics inference