【发布时间】:2019-02-22 21:38:36
【问题描述】:
完整的打字稿错误:
'(c: IAsset) => number' 类型的参数不可分配给'(n: IAsset) => ReadonlyArray' 类型的参数。 类型 'number' 不可分配给类型 'ReadonlyArray'。
我的calculatePercentage 功能:
// Add coin's percentage of portfolio
export const calculatePercentage = (portfolio: IAsset[], coin: IAsset) => {
if (coin) {
portfolio.push(coin);
}
const addValue = (c: IAsset) => c.value;
const values = R.chain(addValue, portfolio);
const total = values.reduce((acc: number, val: number) => acc + val);
const updatedPortfolio = portfolio.map((c) => {
c.percentage = round((c.value / total) * 100);
return c;
});
return updatedPortfolio;
};
使用addValue,我接受IAsset 的类型并返回它的值(number);
在R.chain(addValue, portfolio) 中,addValue 函数随后用于portfolio 中的每个项目,它的类型为IAsset。
我的界面:
export interface IAsset {
currency: string;
exchange: string;
marketCap: number;
name: string;
percentage: number;
price: number;
position: number;
value: number;
}
关于如何在此处正确设置类型的想法?
【问题讨论】:
-
This answer 可能会阐明链和地图之间的区别。
标签: javascript typescript ramda.js