javascript - Object.keys 在 typescript 中使用数字

标签 javascript arrays typescript object ecmascript-6

type Foo = { [key: number]: string }

const foo: Foo = { 100: 'foo', 200: 'bar' }
const sizes: number[] = Object.keys(foo)

给我:

Type 'string[]' is not assignable to type 'number[]

为什么 Typescript 假定 string[]?在这里创建数字数组的正确方法是什么?

最佳答案

所有键都是 JavaScript 中的字符串 - 只需使用 map:

const sizes: number[] = Object.keys(foo).map(Number);

这仅适用于数字字符串 - 例如,如果它是包含小数的欧洲字符串,它将是 NaN,并且永远不会结束。

console.log(Number("10,7"));

或者改变你的类型之一:

const sizes: string[] = Object.keys(foo);

或者:

type Foo = { [key: string]: string };

关于javascript - Object.keys 在 typescript 中使用数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804096/

相关文章:

javascript - 是否有任何用于处理 hashbang/shebang (#!) url 的 javascript 库?

javascript - ReactJs 不更新状态

c++ - STL 是否包含适用于数组的迭代器?

jquery - 如何在 Swagger 生成的 typescript-jquery 客户端中设置 OAuth 授权 token

JavaScript 替换字符串中的多个数字

php - 使用 AJAX 从二维 PHP 数组创建二维 jQuery 数组

php - 如何显示子类别的面包屑

javascript - 使用javascript循环遍历具有数组的json对象

backbone.js - TypeScript 覆盖的成员不是原始成员的子类型

TypeScript:自定义 Express 路由器上的自定义请求类型 (TS2769)