2017-06-14 169 views
2
類型

這裏是一個有效的打字稿片段:什麼是類型的打字稿

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?

如果是,是什麼類型?

回答

2

您可以使用:

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; 
}