如何在 TypeScript 中输入 reduce() 方法

在 TypeScript 中输入 reduce() 方法

How to Type the reduce() method in TypeScript

使用泛型reduce()在 TypeScript 中键入方法,例如
const result = arr.reduce<Record<string, string>>(myFunction, {}). 泛型用于指定reduce()
方法的返回类型和初始值。

索引.ts
const arr = [{ id: 1 }, { name: 'Alice' }, { salary: 100 }]; type ReduceReturnType = { id?: number; name?: string; salary?: number; }; const result = arr.reduce<ReduceReturnType>( (accumulator, current) => { return { ...accumulator, ...current }; }, {}, // 👈️ initial value ); // const result: ReduceReturnType console.log(result); // 👉️ {id: 1, name: 'Alice', salary: 100} console.log(result.id); // 👉️ 1 console.log(result.name); // 👉️ "Alice" console.log(result.salary); // 👉️ 100

我们使用
泛型来指定方法的初始值和返回值的类型reduce

result变量的类型ReduceReturnType在示例中。

我们将属性标记为
可选
ReduceReturnType满足编译器的要求,因为我们传递给reduce()方法的初始值是一个空对象并且与
ReduceReturnType.

您还可以使用
类型断言,尤其是当返回值的类型与初始值的类型不同时。

索引.ts
const arr = [{ id: 1 }, { name: 'Alice' }, { salary: 100 }]; type ReduceReturnType = { id: number; // 👈️ 👈️ 👈️ no longer optional name: string; salary: number; }; const result = arr.reduce<ReduceReturnType>( (accumulator, current) => { return { ...accumulator, ...current }; }, {} as ReduceReturnType, // 👈️ 👈️ 👈️ Now using Type Assertion ); // const result: ReduceReturnType console.log(result); // 👉️ {id: 1, name: 'Alice', salary: 100} console.log(result.id); // 👉️ 1 console.log(result.name); // 👉️ "Alice" console.log(result.salary); // 👉️ 100

我们传递给
reduce
方法的函数会为数组中的每个元素调用。
reduce()方法返回累积结果。

我们传递给方法的第二个参数是
accumulator变量的初始值。

在下一次迭代中,该accumulator变量包含我们从回调函数返回的任何内容。

让我们看一下键入该reduce()方法的另一个示例。

索引.ts
const arr = ['a', 'b', 'c']; type ReduceReturnType = Record<string, string>; const result = arr.reduce<ReduceReturnType>( (accumulator, current) => { return { ...accumulator, [current]: current }; }, {}, // 👈️ initial value ); // const result: ReduceReturnType console.log(result); // 👉️ {a: 'a', b: 'b', c: 'c'}

我们用于Record<string, string>方法的类型accumulator、初始值和返回值reduce()

Record<Keys, Type>类型是
实用类型
,用于构造其键和值具有特定类型的对象。

示例中的类型表示当对象以字符串键索引时,它返回一个字符串类型的值。

换句话说,accumulator示例中的变量是一个包含字符串键和值的对象。

current变量存储当前迭代的数组元素。

发表评论