使用TypeScript导入'global'模块

5

我正在使用Mocha和TypeScript编写测试...这里是一个快速的示例:

import {assert} from 'chai';
import Greeting from '../../../src/component/greeting/greeting';

describe('Greeting component', function () {
    it('should greet correctly', function () {
        let greeting = new Greeting();
        assert(greeting.greeting === 'Hello World', 'should express the correct greeting');
    });
});

我可以看到这些被正确编译。我将它们输出为CommonJS模块,然后使用system-js作为浏览器中的加载器。
System.import('component/greeting/greetingSpec.js')
    .catch(console.log.bind(console))
    .then(function() {
        mocha.run();
    })

我想创建一个文件,列出所有的“spec”文件:

import * as greeting from './greeting/greetingSpec';
import * as foo from './greeting/fooSpec';

然而,TypeScript编译器可以看到这些导入未被使用,因此不会将它们包含在JS输出中。
我如何定义一个单一的“入口点”来加载我的测试,使其能够通过system-js加载?
2个回答

6

尝试使用只产生副作用的 import

import './greeting/greetingSpec';
import './greeting/fooSpec';

这将不会被省略。更多信息请参见此讨论


-1

你的代码

import * as greeting from './greeting/greetingSpec';
import * as foo from './greeting/fooSpec';

然而,TypeScript编译器可以看到这些导入是未使用的,因此不会将它们包含在JS输出中。
这是一个功能,用于支持例如延迟加载:https://basarat.gitbooks.io/typescript/content/docs/project/external-modules.html 解决方法:
import * as greeting from './greeting/greetingSpec';
import * as foo from './greeting/fooSpec';
// use the imports in a dummy fashion to enforce that they get loaded
let _greeting = greeting;
let _foo = foo;

我经常在这里这样做 :-)


谢谢,这个可行,不过被采纳的答案展示了一种更加优雅的方法。 - ColinE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接