- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
完整的 Typescript 错误:
Argument of type '(c: IAsset) => number' is not assignable to parameter of type '(n: IAsset) => ReadonlyArray<{}>'. Type 'number' is not assignable to type '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)
,然后在 portfolio
中的每个项目上使用 addValue
函数,类型为 IAsset
.
我的界面:
export interface IAsset {
currency: string;
exchange: string;
marketCap: number;
name: string;
percentage: number;
price: number;
position: number;
value: number;
}
关于如何在此处更正设置类型的想法?
最佳答案
我对 Ramda 不是很熟悉,但是阅读文档,这似乎可行:
const addValue = (c: IAsset) => [c.value];
const values = R.chain(addValue, portfolio);
但看起来您真正想要使用的是 map
const addValue = (c: IAsset) => c.value;
const values = R.map(addValue, portfolio);
相当于内置的map
功能:
const addValue = (c: IAsset) => c.value;
const values = portfolio.map(addValue);
但你也可以使用 reduce
无需中间步骤即可获取总数以获取 values
:
const total = portfolio.reduce((acc: number, { value }: IAsset) => acc + value, 0);
我想 Ramda 风格的版本应该是这样的:
var getValue = (c: IAsset) => c.value;
var adder = (a: number, b: number) => a + b;
R.reduce(adder, 0)(R.map(getValue)(portfolio));
关于javascript - 类型 'number' 不可分配给类型 'ReadonlyArray<{}>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54835543/
我在 TypeScript 中有这个代码片段: const arr: ReadonlyArray = [ "123", "234" ]; arr.push("345"); TS 编译器
在某些情况下,Angular 函数和回调返回一个 ReadonlyArray。但是数组应该像往常一样使用,因为我不使用像 Redux 中的那些不可变结构。 那么如何将 ReadonlyArray 转换
一些 native Angular 函数返回一个 ReadonlyArray。一些 native Angular 回调传递 ReadonlyArrays。由于我的 typescript 代码可能会以多
代码 1: let readonlyArray: ReadonlyArray = ["test", 1, 1]; 代码 2: let readonlyArray: Readonly = ["test
背景是,我正在尝试从 .env 中读取 DatabaseType 以构建 TypeORM 连接,如下所示: const config: ConnectionOptions = { type: pr
完整的 Typescript 错误: Argument of type '(c: IAsset) => number' is not assignable to parameter of type '
我正在尝试从 official documentation 学习 Typescript .而在 Interfaces section我已阅读以下内容: TypeScript comes with a
type Foo = {a: number} let obj: Foo = {} as Readonly let arr: number[] = [] as ReadonlyArray 据我所知Rea
我是一名优秀的程序员,十分优秀!