[英]How to get Generic Parameter Type of class in Typescript
我想獲取一些 class 的通用參數類型,例如:
class ClassA<T> {
value!: T;
getParameterType() {
return <type of T>;
}
}
getParameterType
方法返回T的Class類型,怎么辦? 還是有其他方法?
您不能在 Typescript 中返回類型,因為類型不是值。 Typescript 編譯為 Javascript 所以類型不存在那里。 當我編譯你的代碼時你得到的錯誤(當我將 'type' 和 'of' 連接到typeof
時)說:
'T' 僅指一種類型,但在這里用作值。
這是完全正確的,您只能返回值並使用這些值來執行操作。 你不能返回一個類型。 這與編寫以下 function 相同:
function wrong() {
return string // You can return 'hello world'
}
你不能說return string
另請查看 typescript 代碼在編譯時會發生什么:
let x: string = 'hello world'
變成 Javascript let x = 'hello world'
類型消失了!
您正在尋找的是一種從ClassA
中提取泛型參數T
的類型, typescript 具有關鍵字infer
,它允許您獲取任何類型的類型參數。
type getType<T> = T extends ClassA<infer U>? U: never
並像這樣使用它:
type Test = getType<ClassA<string>>
Test 的類型是字符串
注意類型和值的差異,它們不是同一個東西,對待完全不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.