我想知道爲什麼類型typeof T
和new() => T
不兼容。考慮一個getConstructor<T>
功能:TypeScript:typeof T不兼容{new():T}
function getConstructor<T>(instance: T)
{
return instance.constructor as new() => T;
}
let instance = new MyClass();
let x: typeof MyClass;
let y = getConstructor(instance);
x = y; // type error
的錯誤狀態:類型new() => MyClass
是不能分配給類型typeof MyClass
。這可能是因爲我的MyClass
有一些靜態函數在new() => MyClass
中丟失。
因此,一個解決方案是使用typeof T
:
function getConstructor<T>(instance: T)
{
return instance.constructor as typeof T; // type error
}
然而,這給了我另一種類型的錯誤:T
僅是指一類,但被用作這裏的值。
打字稿語言規範中4.18.6節規定: 在位置處一個類型的預期,「的typeof」也可以在一種類型的查詢中使用的[...],以產生 表達式的類型。
那麼爲什麼會出現上述類型的錯誤呢?無論如何,有什麼辦法可以做到這一點?
你能分享一個指向TypeScript Playground第一個例子的基本代碼的鏈接嗎? http://www.typescriptlang.org/play/ –