Typescript中的类型是什么类型

时间:2017-06-14 09:40:01

标签: typescript

这是一个有效的打字稿片段:

class A{
}

// what is the type of x ?  i.e. f( x: <TYPE HERE>)...
function f(x) {
    return new x();
}

const t = f(A);

很明显,x的类型是构造函数的类型,但我不清楚如何在Typescript中指定它。

是否可以输入参数x?

如果是,那是什么类型?

1 个答案:

答案 0 :(得分:3)

您可以使用:

interface Newable<T> {
    new (): T;
}

如下:

class A {}

interface Newable<T> {
    new (): T;
}

function f(x: Newable<A>) {
    return new x();
}

const t = f(A);

如果你想允许构造函数参数,你需要输入它们:

class A {
    constructor(someArg1: string, someArg2: number) {
        // ...
    }
}

interface Newable<T> {
    new (someArg1: string, someArg2: number): T;
}

function f(x: Newable<A>) {
    return new x("someVal", 5);
}

const t = f(A);

如果需要,您还可以做一些更通用的事情:

interface Newable<T> {
    new (...args: any[]): T;
}