加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
12_泛型_9、内置方法中的泛型.ts 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
韩旭明 提交于 2023-01-27 16:56 . 修改说明
/**
* TypeScript 中为非常多的内置对象都预留了泛型坑位,
*/
//1、在 Promise 中,在填充 Promise 的泛型以后,其内部的 resolve 方法也自动填充了泛型
function p() {
return new Promise<boolean>((resolve, reject) => {
resolve(true);
});
}
//2、在数组 Array<T> 当中,其泛型参数代表数组的元素类型,几乎贯穿所有的数组方法:
const arr: Array<number> = [1, 2, 3];
arr.push('hanxuming');
arr.includes('hanxuming');
/**
* 数组 find 的方法:
*/
// number | undefined
arr.find(() => false);
/**
* 数组 reduce 的方法,reduce 方法是相对特殊的一个,它的类型声明存在几种不同的重载:
*
* 当不传入初始值时,泛型参数 会从 数组的元素类型 中进行填充。
* 当传入初始值时,如果 初始值的类型 与 数组元素类型 一致,则使用 数组的元素类型 进行填充。
* 比如第一种 reduce 调用。
*
* 当传入一个数组类型的初始值,reduce 的泛型参数会默认从这个初始值推导出的类型进行填充,如这里是 never[]。
* 比如第二种 reduce 调用,
*
* 第三种情况是 信息不足,无法推导出正确的类型,可以 手动传入泛型参数 来解决:
*/
// 第一种 reduce
arr.reduce((prev, curr, idx, arr) => {
return prev;
}, 1);
// 第二种 reduce
// 报错:不能将 number 类型的值赋值给 never 类型
arr.reduce((prev, curr, idx, arr) => {
return [...prev, curr]
}, []);
// 第三种 reduce
arr.reduce<number[]>((prev, curr, idx, arr) => {
return prev;
}, []);
//export {}:解决“无法重新声明块范围变量”错误提示问题
export { }
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化