我使用 AMD 模块类型、ES5 目标和 TypeScript 1.8 --outFile
参数从我的 TypeScript 项目中创建了一个 myLib.min.js
/myLib.d.ts
文件组合。--outFile
参数导致将所有转译的.js
连接成一个myLib.js
文件和一个相应的myLib.d.ts
文件。
应该部署两个生成的文件myLib.min.js
/myLib.d.ts
。
现在我想在另一个 TypeScript 项目中利用我的部署。我正在使用SystemJS
加载模块和网页来托管加载器。
网页上的JavaScript应该只加载main.min.js
。 然后main.min.js
应该加载myLib.min.js
.
这是我在网页中使用的 HTML:
<html>
<body>
<script src="../node_modules/systemjs/dist/system.js"></script>
<script>
System.baseURL = "../output";
System.import("/tests/Scripts/main.min.js");
</script>
</body>
</html>
我的问题是:我应该向main.ts
添加什么才能加载转译的代码myLib.min.js
?
在我的VS Code环境中,如果我在main.ts
顶部使用import {MyClass} from "path/to/myLib"
,我会收到一条错误消息,告诉我"'path/to/myLib.d.ts'不是模块"。
但是,如果我在main.ts
顶部使用/// <reference path="path/to/myLib" />
,则库中的所有符号都无法识别,并且每当我尝试从库中引用类名时都会显示红色波浪线。
您需要在 myLib.ts 中使用 MyClass 的导出关键字。这是从模块开始的好读物。
export class MyClass{
//parameters and functions here...
}
以下是 TypeScript 团队的答案,供公众参考:
https://github.com/Microsoft/TypeScript/issues/6382