如何使用扩展某个对象的泛型为状态创建接口?



这里是我的状态接口。

export interface IState <T extends CashflowObject> {
cashflowToPost?: T;
cashflowList: T[];
}

我想把它用于我的抽象类:

export default abstract class CashflowListView<T> extends React.Component<{}, IState<T>> 

然后我想指定我将为实现CashflowListView类的其他类使用什么类型的cashflowobject:

export default class AssetList extends CashflowListView<Asset> 
这是我的对象结构:
export interface CashflowObject {
id: number;
name: string;
value: number;
taxable: boolean;
}
export interface AssetLiability extends CashflowObject {
interest: number;
}
export interface Liability extends AssetLiability{}
export interface Asset extends AssetLiability{}

然而,我的typescript抱怨,在部分:

export default abstract class CashflowListView<T> extends React.Component<{}, IState<T>> 

T atReact.Component<{}, IState<T>>不扩展现金流对象,有意义....但是将T类型设置为现金流会使typescript在其他领域出现问题,比如我的AssetList类中的渲染函数:

render() {
return (
<div className="cashflow-table">
{this.state.cashflowList.map((asset: Asset) => <this.AssetEntry asset={asset} />)}
<AssetPost listUpdateFunction={this.callApi.bind(this)}></AssetPost>
</div>
)
}

但是我要怎么写我要做的事情呢?

export default abstract class CashflowListView<T extends CashflowObject> extends React.Component<{}, IState<T>> 

cashflowlistview泛型中的T也必须扩展cashflowobject。现在很明显了🤓.

最新更新