2016-07-04 190 views
2

如果有人能够对TypeScript 1.8模块进行一些介绍,我将不胜感激。Typescript模块:定义未定义

我有SomeClass.ts文件:

export class SomeClass { 

} 

,然后在我的app.ts我导入SomeClass的:

import {SomeClass} from "./SomeClass"; 
var xxx = new SomeClass(); 

都与AMD和CommonJS的模块系统,ES5目标,我建该应用程序,如果我在浏览器中打开它,我得到“定义未定义”或“要求未定义”错误。

我应该为此安装一些额外的库吗?

+0

如果你的目标ES5 CommonJS的它应该工作。 – AlexG

+0

你需要实际加载你的页面中的库脚本 –

回答

2

将模块系统设置为“amd”。 下载requirejs并将其包含在您的HTML中。

<script data-main="scripts/app" src="scripts/require.js"></script> 

注意data-main属性。它的值是路径+模块名称,在你的情况下是“应用程序”。 Requirejs将获取你的模块,所以你不应该把它包含在另一个脚本标签中。

+0

所以只是要清楚 - 如果我使用带有导入的typescript模块,我将永远必须使用require,对吧?有没有办法将所有的项目编译成单个文件并以旧式的方式使用它?顺便说一下,我正在使用Visual Studio。 – zeroin

+1

请参阅basarat的回答。在您指定输入模块(在您的案例app.js中)后,Webpack可以生成所有模块的捆绑包。如果你决定使用webpack,那么你不需要requirejs。 – Granga

1

我应该为此安装一些额外的库吗?

是的。但是,您可以轻松地将库与您的项目捆绑在一起。例如。使用commonjs(允许您完美地使用npm),然后使用webpack进行编译。

更多

快速入门:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html

+1

谢谢,我会尝试。不过,我使用的是Visual Studio,希望能够在没有这么长的过程的情况下运行和编译项目。我也希望能够得到一个没有任何依赖的文件,但我想这是不可能的。 – zeroin

+1

@zeroin,是的,这是可能的。这正是webpack所做的。一个包含依赖关系和代码的大包。 – Granga

+1

@zeroin关于VS的用法:我建议你熟悉** npm **。它的任务可以从cmd或[NPM Task Runner](https://visualstudiogallery.msdn.microsoft.com/8f2f2cbc-4da5-43ba-9de2-c9d08ade4941)等插件运行。如果你决定使用webpack,你需要运行的唯一命令是'webpack'。 – Granga