是否可以在TypeScript中分解交叉类型?是的,我知道它可以用联合类型完成,但我认为我不能在有趣的类型上使用Exclude<,>
(我已经尝试了它并且它不起作用)。例如:
File1.ts - 我的系统文件。
namespace A {
class $PrivateTypeA { }
export var TypeA: typeof $PrivateTypeA & { Func(a:string):any } = <any>$PrivateTypeA;
}
File2.ts - 其他一些开发者使用我的文件。
namespace B {
class $PrivateTypeB extends <Exclude<typeof A.TypeA, Func(a:any)=>any>><any>A.TypeA { } // (YES, I know this won't work, but it gives you the idea)
export var TypeB: typeof $PrivateTypeB & { Func(a:number):any } = <any>$PrivateTypeB;
}
目标是:
Func
的不同签名将叠加)。是的,有很多解决方法,例如将原始类型存储在另一个属性中(只需添加& {__originalType: typeof $TheType}
),或者在属性名称上使用exclude<,>
并重建类型签名,同时丢失原始构造函数签名,但那不是我想要的。我只是想知道它是否可以完成,如何,或者只是说不。 ;)我希望我在最新版本中遗漏了一些我不知道的新内容(我浏览了发行说明,只有exclude
接近,但它似乎只适用于联合类型) 。我也对其他想法持开放态度,但必须满足要点1-3。