如果返回接口的“自定义”类型并且使用typeof,那么我将获得原始类型(我理解为什么,我读了它),但是我可以获得自定义类型吗?
如果我有以下情况:
interface X{
A:()=>Omit<typeof this, "A">,
B:()=>Omit<typeof this, "B">,
C:()=>Omit<typeof this, "C">,
}
let X : X = {...}
如果想做到以下几点:
即1:XA()。B()。C()
即2:XC()。A()。B()
但不是:XA()。B()。A()(目前可行)
Typescript确实具有多态this
类型,因此您可以编写以下接口:
interface X{
A:()=>Omit<this, "A">,
B:()=>Omit<this, "B">,
C:()=>Omit<this, "C">,
}
但是,这不会做您想要的事情,因为this
创建接口时绑定的类型不是基于调用该函数的对象的类型。
我们可以使用this
函数的参数和泛型类型参数来捕获调用函数的对象的类型。这将按您期望的那样工作:
interface X{
A:<T>(this: T)=>Omit<T, "A">,
B:<T>(this: T)=>Omit<T, "B">,
C:<T>(this: T)=>Omit<T, "C">,
}
let X: X = null!
X.A().B().C()
X.C().A().B()
X.A().B().A() // err
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句