我可以从 TS 2.x 中导入用 TS 1.x 编写的类型吗?
Can I import from TS 2.x typings written in TS 1.x?
我几天前开始学习 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;
}
有没有办法从打字稿 2 导入指定为 export = xxx
的默认导出?
是的,您可以使用它们。不幸的是,TypeScript 对 ES 模块采用了一种向后看的方法,而不是前瞻性的方法。
export = rsvp
不是默认导出。
默认导出的格式为
export default rsvp;
export =
是一个特定于 TypeScript CommonJS 的构造,它意味着分配给 module.exports
属性 可用的 CommonJS 模块。
为了将其导入为默认值,您需要做两件事。
- 在您的 tsconfig.json
中设置 "allowSyntheticDefualtImports": true
- 使用 ES 模块 <-> CommonJS 模块互操作感知运行时,例如 SystemJS and/or 在另一个构建步骤中通过 Babel 管道你的代码
我几天前开始学习 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;
}
有没有办法从打字稿 2 导入指定为 export = xxx
的默认导出?
是的,您可以使用它们。不幸的是,TypeScript 对 ES 模块采用了一种向后看的方法,而不是前瞻性的方法。
export = rsvp
不是默认导出。
默认导出的格式为
export default rsvp;
export =
是一个特定于 TypeScript CommonJS 的构造,它意味着分配给 module.exports
属性 可用的 CommonJS 模块。
为了将其导入为默认值,您需要做两件事。
- 在您的 tsconfig.json 中设置
- 使用 ES 模块 <-> CommonJS 模块互操作感知运行时,例如 SystemJS and/or 在另一个构建步骤中通过 Babel 管道你的代码
"allowSyntheticDefualtImports": true