是否可以重用某些 class 的泛型的类型参数
Is it possible to reuse type parameter of generics of some class
例如我有以下代码
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: ????): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}
我可以获取 bar 的类型 - 但我想在不创建额外类型或接口的情况下获取 promise 中的类型。
我搜索了很多,我认为这还没有实现或建议,但在创建功能请求之前我想确定一下。
你可以做到,但是你需要一个条件类型来通过infer
从泛型class中提取类型参数:
type UnboxPromise<T extends Promise<any>> = T extends Promise<infer U> ? U : never;
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: UnboxPromise<Foo['bar']>): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}
例如我有以下代码
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: ????): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}
我可以获取 bar 的类型 - 但我想在不创建额外类型或接口的情况下获取 promise 中的类型。
我搜索了很多,我认为这还没有实现或建议,但在创建功能请求之前我想确定一下。
你可以做到,但是你需要一个条件类型来通过infer
从泛型class中提取类型参数:
type UnboxPromise<T extends Promise<any>> = T extends Promise<infer U> ? U : never;
class Foo {
bar: Promise<string[]>;
// a is the same type as type of promise in bar
baz(a: UnboxPromise<Foo['bar']>): Foo['bar'] {
// some code
return Promise.resolve(a);
}
}