我应该在打字稿中使用什么类型来表示任何类?
我正在尝试编写一个函数,它接受一个类数组并返回一个不同顺序的数组 .
function shuffle(classes: typeof Object[]) : typeof Object[] {
return ...;
}
class A { }
class B extends A { }
class C extends B { }
class D extends B { }
suffle([A, B, C, D]);
类型'typeof A []'的参数不能分配给'ObjectConstructor []'类型的参数 .
然后我试过了:
suffle([typeof A, typeof B, typeof C, typeof D]);
错误TS2345:类型'string []'的参数不能分配给'ObjectConstructor []'类型的参数 . 类型'string'不能分配给'ObjectConstructor'类型 .
什么是正确的方法?泛型?怎么样?这不起作用:
export function <T extends typeof Object> shuffle(classes: T[]) : T[]
这既不是:
export function <T extends Object> sortClassesBySpeciality(classes: typeof T[]) : typeof T[]
另外为什么typeof(typeof A)是“string”和“”typeof A是什么功能?好吧,得到这个, typeof
有两个非常不同的类型定义和表达的含义上下文 .
(最终目标是从 Object
开始按级别 extends
排序 . )
1 回答
你应该避免在typescript中使用
Object
类型,你最好使用any
作为the docs say:但是如果你想表示类,那么你需要有以下形式:
或者在你的情况下:
(code in playground)
如果您的所有类都基于超类(如您的示例所示),那么您可以简单地执行:
编辑
刚看到你想要的
要回答这个问题:
(code in playground)