我正在为一个名为library
的库编写类型定义,该库包含具有方法A
的通用接口refine
,可以创建一个新的A
对象通过调用createA
函数。
interface A<T> {
refine<U extends T>(): A<U>
}
interface CreateA {
<T extends any>(): A<T>;
}
const createA: CreateA;
我们现在可以创建新的A
对象,这些对象受初始createA
函数或链接的refine
方法的约束。
createA<any>(); // A<any>
createA<any>().refine<number>(); // A<number>
在调用refine
方法时,如何使TypeScript引用本身并优化其类型。
const a = createA<any>();
a.refine<number>();
在运行a
方法后,我希望A<number>
的类型为refine
,但目前仍为A<any>
类型。