2016-09-27 34 views
1

在Visual Studio中,我创建了一个Typescript项目,其中有几个类在默认的app.ts文件中声明。现在我想开始将这些类分成单独的.ts文件。我很难理解为这个项目类型推荐哪个模块加载系统。Typescript Visual Studio 2015 Update 3哪个模块系统用于导入单独的ts文件

enter image description here

我选择ES6,这样我可以使用语法ASYC /等待:

ts project props

我添加了一个新的Test.ts与导出的测试类型声明文件:

export class Test { 

} 
在我app.ts我创建这个类型的实例

window.onload = async() => { 
    let test = new Test(); 
} 

的Visual Studio提供添加导入它:

import {Test} from "Test"; 

现在,当我运行在Chrome的解决方案,我得到以下控制台消息:

Uncaught SyntaxError: Unexpected token import 

我意识到,铬不是“进口”的意识。有人可以提供一个关于如何让导入工作在VS 2015环境中的建议。我是否需要使用另一个模块系统,如果有,请如何添加支持单独加载.ts文件?

编辑:使用此语法 我见过的例子:

/// <reference path="Test.ts" /> 

,但它不工作编译时解析型我推测这是一个过时的做法。

而且,我看在Chrome的源选项卡上,我可以看到我所想的是我的源transpilation到(ES5):

window.onload =() => __awaiter(this, void 0, void 0, function*() { 

,但我也看到了“下课”的关键字,其我没有想到,所以我不完全确定为什么某些转换正在发生或没有。即异步到__awaiter(支持),类别(不transpiled和支持),进口

编辑 我跟着project

使用webpack.config.js(不转化,不支持。):

module.exports = { 
    entry: './src/app.ts', 
    output: { 
     filename: './dist/bundle.js' 
    }, 
    resolve: { 
     // Add `.ts` and `.tsx` as a resolvable extension. 
     extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'] 
    }, 
    module: { 
     loaders: [ 
      // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader` 
      { test: /\.tsx?$/, loader: 'ts-loader' } 
     ] 
    } 
} 

但我似乎有一个import语句一字不差地复制,并在ES5输出不转换成浏览器能够理解的装载机相同的问题:

import {Test} from "./Test"; 

enter image description here

+1

SO响应太长,但TL; DR:使用外部模块和webpack。检查这[优秀的资源](https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html) –

+0

优秀 - 我甚至没有意识到有浏览器和非浏览器基于ts的区别。 – jchristof

+0

按照该链接中的指定设置项目,但我得到的结果相同。 – jchristof

回答

2

感谢布鲁诺把我正确的轨道上。什么使我的单独的.ts文件被转换成一个ES5 js文件是添加babel-loader。

通过其安装到node_modules第一:

npm install babel-loader 

,然后加入装载机参考我tsconfig.js文件:

module.exports = { 
    entry: './src/app.ts', 
    output: { 
     filename: './dist/bundle.js' 
    }, 
    resolve: { 
     // Add `.ts` and `.tsx` as a resolvable extension. 
     extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js'] 
    }, 
    module: { 
     loaders: [ 
      // all files with a `.ts` or `.tsx` extension will be handled by `ts-loader` 
      { test: /\.tsx?$/, loader: 'ts-loader' }, 
      { test: /\.js$/, loader: "babel-loader"} 
     ] 
    } 
} 

现在,在TS文件import语句transpiled到babel-loader语法

相关问题