2017-02-17 84 views
-1

如何正確地將泛型類字段分配到泛型本地字段?Typescript如何將泛型分配到泛型變量字段

比如我有一個泛型類實現

export interface TableBoxProps<T> { 
    getDataSource: <T>() => T[]; 
} 

class Container<T> extends React.Component<TableBoxProps<T>, any>{ ... } 

和地方我有一個功能,這個通用接口,我想從數據源中的條目如這樣

private onCellClick = (row: number, column: number) => { 
     let entity:T = this.props.getDataSource()[row]; // error 
    } 

我的錯誤與上述

[ts] Type '{}' is not assignable to type 'T' 

我有什麼改變,我可以使用let entity:T?它適用於any類型,但我不想這樣做。

回答

2

這是因爲this.props.getDataSource()[row]的類型爲{}。你需要將它轉換爲T:

let entity: T = (this.props.getDataSource()[row] as T); 

你需要,因爲你使用的是帶有JSX反應使用as T而非<T>

+0

Thx。由於我使用的是ReactJs,所以我必須使用'this.props.getDataSource()[row]'作爲T'來投射它。 –

+0

但是你能否解釋爲什麼當我在泛型類中時我必須將它轉換爲'T'? –

+0

請顯示你的班級定義 - 它可能在那裏 –