網站搜尋

javascript - Typescript:無法將 JSON 的值轉換為 [number, number] 元組


我對 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 類型嗎?怎麼做?

提前感謝你。

答案#1

由於 TypeScript 中的元組是被美化的陣列,你可以使用 "as" 關鍵字將其轉換為你的類型:

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