2017-08-07 215 views
0

任何想法如何實現?類型''test''不能用於索引類型'T'

function getTest<T>(): T["test"] { 
    // ... 
} 

...或動態:

function getTest<T, U>(): T[U] { 
    // ... 
} 

不幸的是,編譯器說:Type '「test」' cannot be used to index type 'T'。我正在使用TypeScript 2.4.2。

回答

1

請注意,對於工作類型推斷,您需要將參數傳遞給使用一個或多個泛型類型參數的函數。

否則,將推斷爲{}any


對於第一種情況:

function getTest<T, U extends {test: T}>(): T {} 

對於第二種情況:

function getTest<T, K extends keyof T>(): T[K] {} 
+0

好極了,謝謝!但是「延伸T的關鍵」到底意味着什麼?據我瞭解,「keyofT」只是一串字符串,我想知道它可以「擴展」到什麼程度? – kraftwer1

+0

「擴展」表示與'keyofT'具有協變關係的類型。實際上,這意味着任何字符串都是T的關鍵字之一。 –

相關問題