Typescript:无法将值从json转换为[number,number]元组

时间:2018-08-09 15:29:50

标签: javascript json typescript typescript-typings

我对TypeScript很陌生。也许我的问题很明显,但是我找不到任何解决方案。

我有一个像这样的config.json文件:

{
  "api": {
    "baseUrl": "http://localhost:9000/api",
    "list": {
      "itemsPerPage": 200
    }
  },
  "map": {
    "start": {
      "position": [51.505, -0.09],
      "zoom": 2
    },
    "leaflet": {
      "minOpacity": 0.3,
      "accessToken": "something"
    }
  }
}

我将其导入到一些module.tsx

import config from '../config.json';
const mapCenter: [number, number] = config.map.start.position;
json中的

position必须被视为[number, number]元组,因为我使用的某些库要求将其键入为此类。 但是不幸的是我得到一个错误:

  

TS2322:类型'number []'不能分配给类型'[number,number]'。   类型'number []'中缺少属性'0'。

如何正确转换类型?

我可以使用config.d.ts文件声明json的类型吗?怎么样?

谢谢。

2 个答案:

答案 0 :(得分:0)

这是一个强制转换问题,只需将[number,number]替换为number[]

const mapCenter: number[] = config.map.start.position;

OR

const mapCenter: Array<number> = config.map.start.position;

答案 1 :(得分:0)

由于打字稿中的元组是经过修饰的数组,因此您可以使用“ as”关键字将其强制转换为您的类型:

const mapCenter: [number, number] = config.map.start.position as [number, number];