簡體   English   中英

當我在 Typescript 中傳遞給函數時,如何返回相同的類型?

[英]How can I return the same type as I pass into a function in Typescript?

我有一個函數,我希望能夠將一個類傳遞給它並讓它返回與該類相同的類型。

目前,我發現的最好方法是這樣的:

protected modClass<CLASS_TYPE>(modMe: CLASS_TYPE): CLASS_TYPE {
    console.log(modMe);
    return modMe;
}
const modded = modClass<SomeClass>(new SomeClass());

以上並不可怕,它確實有效,但它並沒有真正返回傳遞給函數的類的類型,而是預定義了它並拒絕采用任何其他類類型。

我希望能夠做的(例如)是這樣的:

const modded = modClass(new SomeClass());
console.log(typeof modded); // SomeClass;

無論如何,是否可以創建一個函數,該函數返回 TypeScript 中其中一個參數的類型?

編輯:我應該提一下,我不只是想讓類型正確,而是要檢查。 我可以讓 modClass 函數返回類型 any 並且typeof是正確的。 它只是沒有任何真正的類型檢查。

typeof是在表達式中使用時的 Javascript 運算符,它將按照預期返回類的object

至於您的函數,編譯器將正確推斷泛型參數,您無需明確指定它。 (更改名稱以符合約定,但無論如何它都應該工作)

class SomeClass{
  bar(){}
}
function modClass<T>(modMe: T): T {
    console.log(modMe);
    return modMe;
}
const modded = modClass(new SomeClass()) // modded is SomeClass

modded.bar()

游樂場鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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