小编Leo*_*nor的帖子

在 TypeScript 中将 JSON 文件导入为 const

我想从数组元素的属性创建联合类型。如果数组是内联的,那么使用常量断言将非常简单。

const arr = [{ "name": "One" }, { "name": "Two" }] as const;

type name = typeof arr[number]["name"];
// name = "One" | "Two"
Run Code Online (Sandbox Code Playgroud)

请注意,没有as const类型name变为等于string,这不是意图。

我面临的问题是数组是在单独的 JSON 文件中定义的。我"resolveJsonModule": true在 TypeScript 选项中进行了设置,以便可以在我的模块中导入 JSON 文件。但是随后编译器扩大了数组中所有属性的类型,因为as const定义中没有。

import * as arr from "./array.json";

type name = typeof arr[number]["name"];
// name = string (!)
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在不扩展类型的情况下导入 JSON 文件?

arrays import json typescript

7
推荐指数
2
解决办法
309
查看次数

为什么这个循环每次迭代重复两次?

下面的函数将每个数字打印两次。有人可以解释它是如何工作的吗?我尝试调试,但我所看到的是 的值i仅在每第二次迭代时增加。

async function run(then) {
    for (let i = 1; i <= 10; i++) {
        console.log(i);
        then = await { then };
    }
}

run(run);
Run Code Online (Sandbox Code Playgroud)

具体来说,有两点我不明白。

  • 为什么i每次迭代都不增加?
  • 具体是then = await { then };做什么的?我的第一个猜测是,它会等待嵌套异步调用run完成,然后再继续下一次迭代,但情况似乎并非如此。

javascript for-loop repeat async-await

5
推荐指数
1
解决办法
1221
查看次数

标签 统计

arrays ×1

async-await ×1

for-loop ×1

import ×1

javascript ×1

json ×1

repeat ×1

typescript ×1