class A<T> {
fields: Array<???>;
}
我希望字段包含T
. 我试过了,A<T, K extends keyof T>
但是在子类中继承时需要提供两个参数B extends A<C, ???>
。我试图将它type K extends/= keyof T
移到班级正文中,但 Typescript 无法识别。
问:使用参数化的类型变量类的参数列表的正确类型注释是什么?
PSA
永远不会被直接实例化,而是会在之后被继承(例如class B extends A<C> ...
,然后fields
会在那些子类中填充)
找到了一个解决方案:
type KeysOf<T1> = keyof T1;
class A<T2> {
fields: Array<KeysOf<T2>>;
请注意,这两个 T 是不同的,只是我的惯例。KeysOf
它所描述的类型是通用的。这使我能够稍后传递我的类参数化的 T。
请注意,我必须在类主体之外声明该类型别名,因为 Typescript 拒绝编译。
请注意type
仅支持来自某些打字稿语言版本的泛型,因此该技巧可能无法在旧版本中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句