TypeScript 中如何限定 reduce() 方法
使用泛型在 TypeScript 中限定 reduce()
方法,例如 const result = arr.reduce<Record<string, string>>(myFunction, {})
。 泛型用于指定 reduce()
方法的返回值和初始值的类型。
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()
方法的初始值和返回值的类型。
结果变量的类型在示例中为 ReduceReturnType
。
我们在 ReduceReturnType 中将属性标记为可选以满足编译器的要求,因为我们传递给
reduce()
方法的初始值是一个空对象,并且与 ReduceReturnType 不兼容。
我们还可以使用类型断言,尤其是在返回值的类型与初始值的类型不同的情况下。
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()
方法返回累加的结果。
我们传递给该方法的第二个参数是累加器变量的初始值。
在下一次迭代中,累加器变量包含我们从回调函数返回的任何内容。
让我们看另一个输入 reduce()
方法的例子。
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>
作为累加器的类型、reduce()
方法的初始值和返回值。
Record<Keys, Type>
类型是一种实用类型,用于构造其键和值具有特定类型的对象。
示例中的类型表示当对象以字符串键索引时,它返回一个字符串类型的值。
换句话说,示例中的累加器变量是一个包含字符串键和值的对象。
当前变量存储当前迭代的数组元素。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。