SystemJS 与 Typescript 冲突?

SystemJS with Typescript conflict?

我正在尝试为现有的 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 文档说:

Note that this is a compatibility property for transitioning to using explicit extensions and will be deprecated in future.

所以,我发现我应该为我的模块加载添加一个 .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 并没有帮助 hree..

别担心,SystemJS 文档有点误导...一旦他们删除了 defaultJSExtension,您只需将代码目录标记为包(在 systemJS 配置中)您可以阅读它here

无论如何,没有扩展名的文件名是一个有效的 ES6 模块import syntax,所以 SystemJS 必须支持它,正如我所说的,他们将在配置中使用不同的方式支持它。