【问题标题】:Importing .json into Typescript as an array将 .json 作为数组导入 Typescript
【发布时间】:2021-12-23 12:37:54
【问题描述】:

我正在尝试将 .json 文件作为数组导入 Typescript,但不知道如何获取值。

import * as data from './list.json';

  const array = data;
  console.log(array);

我的 json 文件

[
  "Element 1",
  "Element 2",
  "Element 3",
  "Element 4",
  "Element 5"
]

这就是我尝试在控制台中记录变量数组时在控制台中的样子。 我可以看到数组中的所有元素都默认存在:但我不知道如何访问它。 我已经尝试过 array[0] 并且未定义

Module
default: Array(5)
0: "Element 1"
1: "Element 2"
2: "Element 3"
3: "Element 4"
4: "Element 5"
length: 5
[[Prototype]]: Array(0)
__esModule: true
Symbol(Symbol.toStringTag): "Module"

【问题讨论】:

    标签: javascript arrays json typescript


    【解决方案1】:

    有几种方法可以导入 json。

    import json from "file.json";
    
    import json = require("file.json");
    
    import * as json from "file.json";
    

    你可以使用任何你想要的。首选第一个。

    【讨论】:

      【解决方案2】:

      导入默认导出的一种方法是这种语法

      import data from './list.json';
      
      const array = data;
      console.log(array);
      

      但您也应该能够使用您的导入方法访问数组元素:

      import * as data from './list.json';
      
      const array = data;
      console.log(array[1]); // 'Element 2'
      

      【讨论】:

        【解决方案3】:

        不要导入 .json,而是使用 typescript module/const 并导出它

        喜欢创建data.ts

        数据.ts

        export const DUMMY_DATA = [
          'Element 1',
          'Element 2',
          'Element 3',
          'Element 4',
          'Element 5',
        ];
        

        并将其导入您的打字稿文件

        喜欢

        import { DUMMY_DATA } from './data';
        
        console.log(DUMMY_DATA);
        
        DUMMY_DATA.forEach((item) => {console.log(item)});
        

        【讨论】:

        • 为什么不导入 JSON? TypeScript 的配置为resolveJsonModule
        • 你可以使用resolveJsonModule,但我更喜欢typescript模块导出,因为它简洁明了
        • 但这意味着您必须为每个 JSON 文件创建一个 TS 文件。在某些项目中,这可能是很多工作。你怎么处理这个?你复制数据吗?
        • 只需要创建一个配置模块并包含您的所有配置JSON
        • 但您通常需要单独的 JSON 文件,例如i18n 翻译文件(每种语言一个文件)。您是否复制数据并处理冗余数据?
        猜你喜欢
        • 2020-06-24
        • 2020-10-29
        • 2020-06-02
        • 2017-05-16
        • 2020-08-09
        • 2021-04-22
        • 2020-12-07
        • 2016-12-17
        • 1970-01-01
        相关资源
        最近更新 更多