SystemJS与Typescript冲突?

时间:2015-10-30 08:39:15

标签: angularjs typescript systemjs

我正在尝试为现有的AngularJS + Typescript应用程序配置SystemJS。

我的模块加载有问题: 当我使用这种语法时:

import module1 from './path-to-module1'

TS编译器很高兴,但SystemJS不会找到此模块。经过一番调查后,我在SystemJS文档中找到了this

System.defaultJSExtensions = true;

// requests ./some/module.js instead
System.import('./some/module');

很酷,现在TS编译器和SystemJS都能正常工作。但是,SystemJS文件说:

  

请注意,这是用于转换为使用显式扩展的兼容性属性,将来会弃用。

所以,我发现我应该在我的模块加载中添加.js扩展,就像这样(删除'defaultJSExtensions = true'标志):

import module1 from './path-to-module1.js'

现在,SystemJS知道如何加载我的模块,由TS编译器说:

Cannot find module './path-to-module1.js'

如何让TS弄清楚这一点?我应该手动将所有模块添加到*.d.ts文件吗?怎么样?

10倍!

修改

我找到this post,我想这应该是我需要做的。我在Grunt文件中找到了这个:

typescript: {
      build: {
        src: ...,
        outDir: '...',
        reference: 'reference.ts',
        options: {
          target: 'es5',
          sourceMap: false,
          declaration: false,
          removeComments: false,
          experimentalDecorators: true,
          module: 'commonjs'
        }
      }
    }

但是,将commonjs更改为system并没有帮助实现......

1 个答案:

答案 0 :(得分:2)

Don't worry, the SystemJS documentation is a bit misleading... Once they remove the defaultJSExtension all you have to do it to mark your code directory as a package (In the systemJS configuration) You can read about it here

Anyway, the file name without the extension is a valid ES6 module import syntax, so SystemJS will have to support it, as I said they will support it using a different way in the configuration.