使用TypeScript导入“全局”模块

时间:2015-12-08 16:32:38

标签: typescript systemjs

我正在使用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');
    });
});

我可以看到这些正确编译。我将它们作为common-js模块输出,并使用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 个答案:

答案 0 :(得分:1)

尝试使用仅副作用import

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

这不会被遗漏。有关详细信息,请参阅this discussion

答案 1 :(得分:0)

您的代码

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;

I do this all the time here :-)