相关疑难解决方法(0)

在TypeScript中导入json文件

我有一个JSON如下所示的文件:

{

  "primaryBright":    "#2DC6FB",
  "primaryMain":      "#05B4F0",
  "primaryDarker":    "#04A1D7",
  "primaryDarkest":   "#048FBE",

  "secondaryBright":  "#4CD2C0",
  "secondaryMain":    "#00BFA5",
  "secondaryDarker":  "#009884",
  "secondaryDarkest": "#007F6E",

  "tertiaryMain":     "#FA555A",
  "tertiaryDarker":   "#F93C42",
  "tertiaryDarkest":  "#F9232A",

  "darkGrey":         "#333333",
  "lightGrey":        "#777777"
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其导入到.tsx文件中.为此,我将其添加到类型定义中:

declare module "*.json" {
  const value: any;
  export default value;
}
Run Code Online (Sandbox Code Playgroud)

而我正在这样导入它.

import colors = require('../colors.json')

该文件中,我使用的颜色primaryMain作为colors.primaryMain.但是我得到一个错误 - JSON

我究竟做错了什么?

json typescript angular angular8

91
推荐指数
11
解决办法
9万
查看次数

导入json文件时,Typescript编译器错误

所以代码很简单:

calls.json

{"SERVER":{
    "requests":{
      "one":"1"
    }
} }
Run Code Online (Sandbox Code Playgroud)

file.ts

import json = require('../static/calls.json');
console.log(json.SERVER);
Run Code Online (Sandbox Code Playgroud)

生成的javascript是正确的,当运行节点js服务器时,控制台日志json.SERVER打印出'{requests:{one:'1'}}',就像它应该的那样.

但是,打字稿编译器(commonjs),不知何故并不特别喜欢这种情况并抛出:"找不到模块'../static/calls.json'".

当然我试着写一个.d.ts文件,像这样:

declare module '../static/calls.json'{
    var exp:any;
    export = exp;
}
Run Code Online (Sandbox Code Playgroud)

这显然会抛出:"Ambient模块声明不能指定相对模块名称".

我也尝试了不同的变体,例如:

declare module 'calls.json' {
    import * as json from '/private/static/calls.json';
    export = json;
}
Run Code Online (Sandbox Code Playgroud)

然后要求:

import json = require('calls.json');
Run Code Online (Sandbox Code Playgroud)

没有正常工作,并有自己的小编译器错误:)

我想使用外部.json文件,因为我使用commonjs serverside和amd clientside,我想要一个文件来加载常量.

javascript json commonjs node.js typescript

52
推荐指数
4
解决办法
5万
查看次数

标签 统计

json ×2

typescript ×2

angular ×1

angular8 ×1

commonjs ×1

javascript ×1

node.js ×1