簡體   English   中英

泛型類型被視為 typescript 中的值

[英]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)
}

這是typescript 操場

有人可以解釋這里發生了什么,我應該怎么做才能解決這個問題?
還嘗試創建一個定義所需 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM