https://github.com/mgumerov/angular
请看一下src / mock-data / mock-data.js - 它很大但非常简单。
System.register([], function (exports) {
mockdata = {......};
exports("MockData", mockdata);
});
我选择在我的TS模块src / app / table-view.ts中使用它:
import { MockData } from 'mockdata/mock-data';
但TSC给了我一条错误消息,因为导入JS模块会导致隐含的'any'对象,除非模块有一个方便的TS类型声明。并且,正如Angular 2快速入门所暗示的那样,“隐含任意”被视为错误。
我最初的冲动是使用require()代替导入模块,正如一些消息来源所提议的那样。然而,这会导致错误“找不到名字:要求”。
好的,让我们提供一个声明:src / mock-data / mock-data.d.ts
declare module 'MockData' {
var mockdata: any;
export = mockdata;
}
它看起来非常像其他类似的声明(https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/adal/index.d.ts),当然它非常简单,因为我只声明一个无类型的对象。也许我甚至不这样做,但不是整个故事!问题是,TSC现在说TS2306:文件... mock-data.d.ts不是模块!即使我试图用之前提到的文件替换文件(来自DefinitelyTyped),消息也保持不变。发生了什么事?
我应该在哪里找到如何在TS中使用JS模块的正确解释?没有类,没有接口,只有一个对象的模块?
答案 0 :(得分:0)
这是适当的声明:
export const MockData: any;
这就是整个模拟数据 这里的MockData是在我的mock-data.js
中进行导出的标识符这是从https://www.typescriptlang.org/docs/handbook/modules.html设计的 - 不幸的是,提示隐藏在“UMD模块”部分中,因为在其他示例中存在“声明”在我的情况下不需要的东西。