2016-04-21 61 views
2

这是我最初使用TypeScript的经验。我带了一个由两个文件组成的简单JavaScript应用程序,并将它们转换为TypeScript。TypeScript编译器在WebStorm中创建空的JavaScript文件

一个文件accounts.ts包含主代码,另一个文件fiat.ts是一个支持文件,该文件用一些导出的成员导出模块Fiat。经过一些编辑后,我从TypeScript编译器得到了更多的错误信息。

我使用tsconfig.json文件来控制编译:

{ 
    "compilerOptions": { 
    "module": "commonjs", 
    "noImplicitAny": true, 
    "removeComments": true, 
    "preserveConstEnums": true, 
    "outFile": "main.js", 
    "target": "ES5", 
    "sourceMap": true 
    }, 
    "files": [ 
    "accounts.ts", 
    "fiat.ts" 
    ] 
} 

应该创建一个main.js文件包含的代码。但这包含成功编译后只有一行:

//# sourceMappingURL=main.js.map 

没有其他代码被包括在内。我发现由事故,如果我删除行

import {Fiat} from './fiat'; 

accounts.ts文件则编译器包括accounts.ts代码分成main.jsfiat.ts不是代码和附加打字稿编译器示出了用于每个引用Fiat错误消息在accounts.ts

我想不出如何从两个TypeScript文件创建一个JavaScript文件。任何帮助,将不胜感激!


我在一些研究后发现:Typescript模块概念可以通过两种不同的方式来处理:内部模块和外部模块。我的困难来自于没有真正理解这一点。外部模块使用动态模块加载程序。你们import他们。只有内部模块可以通过script标签集中到一个(或多个)通过HTML加载的Javascript文件中。要使用内部模块,需要引用它们的文件中的/// <reference path="./name.ts" />行。据我所知,内部和外部模块之间的其他语法差异较小。

+0

[TypeScript将所有ts文件编译为WebStorm 7中的单个JavaScript文件的可能副本](http://stackoverflow.com/questions/21816695/typescript-compile-all-ts-files-as-a-single- javascript-file-in-webstorm-7) –

+0

我看到了,并试图理解它。那里的人使用文件观察者,我直接使用编译器。可能不会有这么大的差别,但是编译器选项在那里提出的对我的问题没有任何作用。这似乎是不同的。 –

回答

1

如果你想使用的模块(外部模块)和单个文件编译它们应该设置module目标amdsystem(假设你有1.8 typescript)在tsconfig.json。

通过删除导入/导出,您不使用模块,因此outFile的作品。

+0

是的,我看到某处解释并尝试了这一点。它导致Javascript代码不执行。使用'amd'选项时,我会在浏览器控制台中看到“定义未定义”和“系统”“系统未定义”错误。 –

+0

你在用什么装载机? – Amid

+0

还记得浏览器还没有能力加载模块 - 你需要使用像systemjs,requirejs等 – Amid

相关问题