【发布时间】:2018-10-15 07:33:23
【问题描述】:
假设我有这个 JSON 文件:
{
"foo": 1,
"bar": true,
"baz": "yes"
}
有没有办法导入该文件并使用 TypeScript 获得静态类型?
使用普通的 Node.js,我们可以:
const json = require('./file.json');
但是有了TS,有没有办法:
import json = require('./file.json');
有没有办法像这样获得静态类型?应该很容易吧?
IMO,你应该能够做到
typeof 'path/to/json/file.json'
那就是:
export type MyInterface = typeof 'path/to/json/file.json'
这会给你一个类型。
【问题讨论】:
-
为什么不直接创建一个接口,然后在收到请求响应后断言类型? stackoverflow.com/questions/22875636/…
-
使用接口很不方便,您的接口必须不断更新 JSON,反之亦然。
-
True...所以您的编辑建议应该有一些内置的方法来生成临时接口?不错的主意
-
那么你就不需要生成界面了。 TS 接口是静态的,JSON 也是。为什么不能使用 JSON 本身作为接口。它有一个名称 - JSON 文件的文件路径就是名称。
-
我将此升级为功能请求,因为我不希望得到我正在寻找的答案:github.com/Microsoft/TypeScript/issues/23895
标签: json node.js typescript typescript2.0