![](/img/trans.png)
[英]TypeScript: How can I explicitly pass in the type to the generics for this function
[英]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.