动态键入参数类型的返回值(带有数组的类型变量)

时间:2019-02-15 15:25:45

标签: typescript

我正在创建一个函数,该函数接收类数组,实例化所有类并返回实例数组。我想要一种使用类型变量来键入该数组的方法,以便返回的数组可以正确键入。

我想要的与TypeScript文档上的示例几乎相同:https://www.typescriptlang.org/docs/handbook/generics.html#using-class-types-in-generics

class BeeKeeper {
    hasMask: boolean;
}

class ZooKeeper {
    nametag: string;
}

class Animal {
    numLegs: number;
}

class Bee extends Animal {
    keeper: BeeKeeper;
}

class Lion extends Animal {
    keeper: ZooKeeper;
}

function createInstance<A extends Animal>(c: new () => A): A {
    return new c();
}

createInstance(Lion).keeper.nametag;  // typechecks!
createInstance(Bee).keeper.hasMask;   // typechecks!

但是我需要类似createInstances

的东西
const [lionClass, beeClass] = createInstances([Lion, Bee]);

我希望返回的数组的类型与作为参数传递的数组的类型相匹配。

编辑: 我知道我可以手动输入它(就像这个人喜欢的问题一样)

const [lionClass, beeClass]: [Lion, Bee] = createInstances([Lion, Bee]);

但是我想动态地做。

0 个答案:

没有答案