Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在TypeScript声明(*.d.ts文件)中导入JSON文件_Json_Typescript_Dynamic_Types_Import - Fatal编程技术网

在TypeScript声明(*.d.ts文件)中导入JSON文件

在TypeScript声明(*.d.ts文件)中导入JSON文件,json,typescript,dynamic,types,import,Json,Typescript,Dynamic,Types,Import,我正在编写一个声明文件,该文件应声明一个全局类型,并严格遵守字符串短语的特定列表。 这些字符串短语实际上是JSON文件中对象的属性键的一部分 两个问题: 是否可以将JSON文件导入声明文件,并使用基本函数(如Object.keys和Array.map)对其进行处理 然而,我想知道,是否有可能使用JS字符串数组来定义TS中的类型 让我给你一个代码示例 假设我们有一个名为data.JSON的JSON文件: { "someList": { "#key1&quo

我正在编写一个声明文件,该文件应声明一个全局类型,并严格遵守字符串短语的特定列表。
这些字符串短语实际上是JSON文件中对象的属性键的一部分

两个问题:

  • 是否可以将JSON文件导入声明文件,并使用基本函数(如
    Object.keys
    Array.map
    )对其进行处理
  • 然而,我想知道,是否有可能使用JS字符串数组来定义TS中的类型
  • 让我给你一个代码示例

    假设我们有一个名为
    data.JSON的JSON文件:

    {
      "someList": {
        "#key1": {"a": 1, "b": 2},
        "#key2": "some value",
        "#key3": 1234
      }
    }
    
    现在,我想创建以下声明文件
    global.d.ts

    import data from './data.json';
    
    declare global {
      type AllowedKeys = Object(data.someList).map(key => key.substr(1));
    }
    
    基本上,我需要这样定义类型(动态定义为JSON文件更改):

    type AllowedKeys = "key1" | "key2" | "key3";
    

    任何帮助或指导都将不胜感激。

    您可以让typescript从json文件中的数据推断类型

    从“/data.json”导入数据;
    导出类型AllowedKeys=keyof-typeof-data[“someList”];
    //这相当于
    //导出类型AllowedKeys=“#键1”|“#键2”|“#键3”
    
    生成的
    d.ts
    文件如下所示:

    type AllowedKeys = "key1" | "key2" | "key3";
    
    从“/data.json”导入数据;
    导出declare type AllowedKeys=keyof typeof data[“someList”];
    
    据我所知,无法在typescript中操作字符串文字(即,删除
    #

    查看这些github问题: