导入表单和模块声明需要就模块的形状,导出的内容达成一致。
编写时(自Typescript 2.9导入JSON时,针对兼容模块格式的一种次佳实践, 请参见note )
declare module "*.json" { const value: any; export default value;}您要说明所有以指定符结尾的模块都有一个 名为
.json的单个导出。 __
default
有几种方法可以正确使用此类模块,包括
import a from "a.json";a.primaryMain
和
import * as a from "a.json";a.default.primaryMain
和
import {default as a} from "a.json";a.primaryMain和
import a = require("a.json");a.default.primaryMain第一种形式是最好的,而它利用的语法糖正是Javascript能够
default导出的原因。
但是,我提到了其他形式,可以给您一些提示。特别注意最后一个。
require给您一个表示模块本身的对象,而 不是 其导出的绑定。
那么为什么会出错呢?因为你写了
import a = require("a.json");a.primaryMain但是
primaryMain,您的尚未声明出口的名称
"*.json"。
所有这些都假定您的模块加载器
default按照原始声明的建议将JSON作为导出提供。
注意: 从Typescript
2.9开始,您可以使用
--resolveJsonModule编译器标志来让Typescript分析导入的
.json文件,并提供有关其形状的正确信息,从而避免了通配符模块声明的需要并验证了文件的存在。某些目标模块格式不支持此功能。



