[英]Generic type treated as a value in typescript
在 typescript 中嘗試 generics 時,我因來自 typescript 的神秘錯誤消息而慘遭失敗。
我嘗試創建一個包裝器來創建具有公共基礎 class 的類,但出現此錯誤:
'T' only refers to a type, but is being used as a value here. ts(2693)
這是代碼:
class Test {
constructor(i: number) {
}
}
class Test1 extends Test {
}
class Test2 extends Test {
}
function f<T extends Test>(n:number): T {
return new T(n)
}
以下工作,但不是通用的:
function f1(n: number): Test1 {
return new Test1(n)
}
有人可以解釋這里發生了什么,我應該怎么做才能解決這個問題?
還嘗試創建一個定義所需 CTOR 的接口,但似乎不受支持。
你不能這樣稱呼它——泛型類型只定義類型並且在 javascript 中不存在。
您可以做的是將您的 class 作為另一個參數傳遞
function f<T extends Test>(clss: new() => T, n:number): T {
return new T(n)
}
然后將推斷 class 的類型,您甚至可以將其稱為
f(Test2, 2)
function 調用的結果將是Test2
類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.