SystemJS不用JS文件替换TS文件?

时间:2015-12-31 11:22:25

标签: typescript systemjs

我最近开始将SystemJS用于我的Angular 2应用程序。但是,它给我带来了麻烦,因为我无法用JS文件替换TS文件。

例如考虑以下导入:

main.ts

int[] n = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
@Test
public void testRecursiveSolution() {
    Assert.assertEquals(0, recursiveBinarySearch(1,n));
    Assert.assertEquals(15, recursiveBinarySearch(16,n));
    Assert.assertEquals(14, recursiveBinarySearch(15,n));
    Assert.assertEquals(13, recursiveBinarySearch(14,n));
    Assert.assertEquals(12, recursiveBinarySearch(13,n));
    Assert.assertEquals(11, recursiveBinarySearch(12,n));
    Assert.assertEquals(10, recursiveBinarySearch(11,n));
    Assert.assertEquals(9, recursiveBinarySearch(10,n));
    Assert.assertEquals(-1, recursiveBinarySearch(100,n));
}
private int recursiveBinarySearch(int n, int[] array) {
    if(array.length==1) {
        if(array[0]==n) {
            return 0;
        } else {
            return -1;
        }
    } else {
        int mid = (array.length-1)/2;
        if(array[mid]==n) {
            return mid;
        } else if(array[mid]>n) {
            return recursiveBinarySearch(n, Arrays.copyOfRange(array, 0, mid));
        } else {
            int returnIndex = recursiveBinarySearch(n, Arrays.copyOfRange(array, mid+1, array.length));
            if(returnIndex>=0) {
                return returnIndex+mid+1;
            } else {
                return returnIndex;
            }
        }
    }
}

main.js(编译结果)

import {SubscriptionsComponent} from './subscriptions.ts';
import {WelcomeComponent} from './welcome.ts';

我希望SystemJS然后请求System.register(['./subscriptions.ts', './welcome.ts'], function(exports_1) { // ... }); ,而是请求subscriptions.js,结果是404。

我不想使用转换器 - 我只是希望SystemJS以某种方式理解我需要请求JS文件。

这是我认为有用的配置(但是,只有在包含subscriptions.ts但不包括foo.ts之类的内容时才有效。)

./foo.ts

有趣的是,它没有请求System.config({ "baseURL": '/', "defaultJSExtensions": false, "paths": { "*.ts": "*.js" } }); System.import('components/main.ts'); ,它实际上要求components/main.ts。如果components/main.js包含其他文件,它就无法工作。

2 个答案:

答案 0 :(得分:0)

不可否认,我没有使用SystemJS,但总体而言,TypeScript模块的文档建议您不要使用文件扩展名:

import {SubscriptionsComponent} from './subscriptions';
import {WelcomeComponent} from './welcome';

以下示例适用于Visual Studio代码编辑器,因此您可能特别遇到Atom问题:

mod.ts

export class Example {
    doIt() {
        return 5;
    }
}

app.ts

import {Example} from './mod'

var x = new Example();

答案 1 :(得分:0)

如果您不想在配置transpiler: none中使用转发器添加。

更改"defaultJSExtensions": true并省略导入的扩展程序。

你还看到错误吗?