在 JavaScript 的 ES10 中,我们有一个非常方便的方法 Object.fromEntries
,它可以将键值对数组转换为对象。然而,在 TypeScript 中,却会提示找不到 Object.fromEntries
的定义。这时,很多人以为 TypeScript 没有支持 Object.fromEntries
,但是实际上,这个方法是可以被 TypeScript 识别的!
Object.fromEntries
的用法
先来回顾一下 Object.fromEntries
的用法。它接收一个数组作为参数,数组中的每一项都必须是一个二元数组,第一个元素是键,第二个元素是值。这个方法会将这些键值对转换为一个对象并返回。
下面是一个例子:
const arr = [['a', 1], ['b', 2], ['c', 3]]; const obj = Object.fromEntries(arr); console.log(obj); // { a: 1, b: 2, c: 3 }
TypeScript 不支持 Object.fromEntries
?
在 TypeScript 中使用 Object.fromEntries
时,可能会遇到类似下面的错误:
Property 'fromEntries' does not exist on type 'ObjectConstructor'.
这是因为 TypeScript 内置类型声明文件中没有定义 Object.fromEntries
这个方法。但是,只要我们手动给 TypeScript 增加对 fromEntries
的类型声明,它就能正常工作了。
给 TypeScript 增加类型声明
我们要做的就是在自己的 TypeScript 代码中声明一下 Object.fromEntries
的类型,就像这样:
interface ObjectConstructor { fromEntries(entries: Iterable<readonly any[]>): any; }
然后,就可以愉快地使用 Object.fromEntries
了:
const arr = [['a', 1], ['b', 2], ['c', 3]]; const obj = Object.fromEntries(arr); console.log(obj); // { a: 1, b: 2, c: 3 }
总结
今天,我们学习了如何在 TypeScript 中使用 Object.fromEntries
方法。虽然 TypeScript 自带的类型声明文件中没有定义这个方法,但是我们只需手动增加一个类型声明就能让 TypeScript 正确识别它。希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658556fbd2f5e1655dffe91c