我可以从TS 1.x中编写的TS 2.x类型导入吗?

时间:2017-04-08 12:59:41

标签: typescript systemjs commonjs babel typescript-typings

我几天前开始学习Typescript,到目前为止,它一直很混乱,尤其是模块。

我正在使用npm install -s @types/knockout导入打字,但大多数可用的打包仍然是用Typescript 1编写的。

以下是es6-promise软件包的输入定义:

declare module 'es6-promise' {
var foo: typeof Promise; // Temp variable to reference Promise in local context
namespace rsvp {
    export var Promise: typeof foo;
    export function polyfill(): void;
}
export = rsvp;
} 

有没有办法从typescript 2导入指定为export = xxx的默认导出?

1 个答案:

答案 0 :(得分:1)

是的,你可以使用它们。不幸的是,TypeScript对ES模块采用了一种向后看的方法,而不是前瞻性的方法。

export = rsvp

不是默认导出。

默认导出的格式为

export default rsvp;

export =是TypeScript CommonJS特定的构造,意味着赋予CommonJS模块可用的module.exports属性。

要将其导入为默认值,您需要做两件事。

  1. tsconfig.json
  2. 中设置"allowSyntheticDefualtImports": true
  3. 使用ES模块< - > CommonJS模块互操作感知运行时,例如SystemJS和/或在另一个构建步骤中通过Babel管道代码