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

斯拉维克·梅尔瑟(Slavik Meltser)

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

两个问题:

  1. 是否可以将JSON文件导入声明文件并使用诸如Object.keys和的基本功能对其进行处理Array.map
  2. 但是,我想知道,是否甚至可以使用JS字符串数组在TS中定义类型?

让我给你一个代码示例。

假设我们有以下名为的JSON文件data.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";

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

夸克

您可以让打字稿根据json文件中的数据推断出类型。

import data from "./data.json";


export type AllowedKeys = keyof typeof data["someList"];
// This is equivalent to
// export type AllowedKeys = "#key1" | "#key2" | "#key3"

生成的d.ts文件如下所示:

import data from "./data.json";
export declare type AllowedKeys = keyof typeof data["someList"];

据我所知,没有办法在Typescript中操纵字符串文字(即,删除#)。

看到那些github问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

在定义文件(* d.ts)中导入类

来自分类Dev

在d3.js中导入json文件

来自分类Dev

Typescript .d.ts文件的搜索路径

来自分类Dev

正确使用Typescript .d.ts文件

来自分类Dev

TypeScript生成具有定义声明而不是导出声明的.d.ts文件

来自分类Dev

如何在d.ts文件中声明的接口中使用TypeScript环境声明接口

来自分类Dev

如何在d.ts文件中导入类型(从另一个文件)而不将其转换为模块?

来自分类Dev

在 Javascript 中导入 Typescript 文件

来自分类Dev

如何从外部 .d.ts 文件扩展 TS 注释?

来自分类Dev

如何访问在 d.ts 文件中声明的枚举 - Nativescript

来自分类Dev

为现有 HOC 编写声明 d.ts 文件

来自分类Dev

如何在 Angular 中使用自定义 Typescript 声明文件 (.d.ts)?

来自分类Dev

Typescript无法识别typescript .d.ts文件,但vsc

来自分类Dev

如何使用.d.ts文件

来自分类Dev

如何创建嵌套的 d.ts 文件?

来自分类Dev

如何使ts节点知道在d.ts文件中声明的名称空间?

来自分类Dev

停止Typescript编译器创建.d.ts文件

来自分类Dev

.d.ts文件中的TypeScript接口无法识别

来自分类Dev

TypeScript-构建.d.ts定义文件-嵌套函数。

来自分类Dev

.d.ts文件中的TypeScript接口无法识别

来自分类Dev

TypeScript-构建.d.ts定义文件-嵌套函数。

来自分类Dev

d.ts文件中的Typescript迁移名称空间

来自分类Dev

如何从现有.js文件写入d.ts文件?

来自分类Dev

嵌套文件导出类型不包含 .d.ts 文件

来自分类Dev

拉入类型以在 .d.ts 文件中使用声明模块而不使其成为模块文件

来自分类Dev

TypeScript生成的定义文件(.d.ts)无法与package.json类型一起使用

来自分类Dev

使用复杂的.d.ts文件(chrome-app.d.ts)

来自分类Dev

TypeScript错误:无法写入文件'index.d.ts',因为它将覆盖输入文件

来自分类Dev

引用d.ts文件时找不到符号

Related 相关文章

  1. 1

    在定义文件(* d.ts)中导入类

  2. 2

    在d3.js中导入json文件

  3. 3

    Typescript .d.ts文件的搜索路径

  4. 4

    正确使用Typescript .d.ts文件

  5. 5

    TypeScript生成具有定义声明而不是导出声明的.d.ts文件

  6. 6

    如何在d.ts文件中声明的接口中使用TypeScript环境声明接口

  7. 7

    如何在d.ts文件中导入类型(从另一个文件)而不将其转换为模块?

  8. 8

    在 Javascript 中导入 Typescript 文件

  9. 9

    如何从外部 .d.ts 文件扩展 TS 注释?

  10. 10

    如何访问在 d.ts 文件中声明的枚举 - Nativescript

  11. 11

    为现有 HOC 编写声明 d.ts 文件

  12. 12

    如何在 Angular 中使用自定义 Typescript 声明文件 (.d.ts)?

  13. 13

    Typescript无法识别typescript .d.ts文件,但vsc

  14. 14

    如何使用.d.ts文件

  15. 15

    如何创建嵌套的 d.ts 文件?

  16. 16

    如何使ts节点知道在d.ts文件中声明的名称空间?

  17. 17

    停止Typescript编译器创建.d.ts文件

  18. 18

    .d.ts文件中的TypeScript接口无法识别

  19. 19

    TypeScript-构建.d.ts定义文件-嵌套函数。

  20. 20

    .d.ts文件中的TypeScript接口无法识别

  21. 21

    TypeScript-构建.d.ts定义文件-嵌套函数。

  22. 22

    d.ts文件中的Typescript迁移名称空间

  23. 23

    如何从现有.js文件写入d.ts文件?

  24. 24

    嵌套文件导出类型不包含 .d.ts 文件

  25. 25

    拉入类型以在 .d.ts 文件中使用声明模块而不使其成为模块文件

  26. 26

    TypeScript生成的定义文件(.d.ts)无法与package.json类型一起使用

  27. 27

    使用复杂的.d.ts文件(chrome-app.d.ts)

  28. 28

    TypeScript错误:无法写入文件'index.d.ts',因为它将覆盖输入文件

  29. 29

    引用d.ts文件时找不到符号

热门标签

归档