使用JSON和TypeScript进行静态类型化

时间:2018-05-04 18:35:10

标签: json node.js typescript typescript2.0

说我有这个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'

这会给你一个类型。

1 个答案:

答案 0 :(得分:2)

您基本上可以使用标准Node.js,但使用interface并将其附加到您require的变量中。

interface File {
  foo: number
  bar: boolean
  baz: string
}

const jsonFile: File = require('./file.json')

如果从文件读取和解析的数据不符合接口,TS应该抛出错误。

目前没有动态分析未读JSON文件的方法来获取它的类型。