打字稿使用es6作为目标但节点不支持" import"关键词

时间:2015-10-17 04:03:53

标签: typescript ecmascript-6

我试图让它在VSCode中运行,但我似乎无法在任何地方找到解决方案。 我只想在带有VSCode的Typescript中使用drawSquare MACRO color,cy,cx,dy,dx mov ah,06 mov al, 0 mov bh,color mov ch,cy mov cl,cx mov dh,dy mov dl,dx int 10h endm ------------------------------------------------- include macros.txt .model small .stack .data saveMode db ? .code main proc mov ax, @data mov ds, ax call SetVideoMode drawSquare 90h, 0h, 49h, 18h, 4fh call RestoreVideoMode mov ax, 4c00h int 21h main endp SetVideoMode proc mov ah, 0fh int 10h mov saveMode, al mov ah, 0 mov al, 13h int 10h push 0A000h pop es ret SetVideoMode endp RestoreVideoMode proc mov ah, 10h int 16h mov ah, 0 mov al, saveMode int 10h ret RestoreVideoMode endp end main ,但我发现nodejs不能支持关键字" import" 。 如果使用" ES5"作为tsconfig.json中的目标,typescript不能支持VSCode中的Generator。 这是演示:

Generator

然后得到这个

// typescript app.ts
import * as http from "http";

http.createServer((request, response) => {  
    response.writeHead(200, {"Content-Type": "text/html"});  
    response.write("Hello World!");  
    response.end();
}).listen(8000);  

/// <reference path="typings/tsd.d.ts" /> import * as http from "http"; http.createServer((request, response) => { response.writeHead(200, { "Content-Type": "text/html" }); response.write("Hello World!"); response.end(); }).listen(8000); //# sourceMappingURL=app.js.map node --harmony app.js运行全部获取:

node --harmony_modules app.js

或使用

g:\Temp\TypeScriptTest>node --harmony app.js
g:\Temp\TypeScriptTest\app.js:2
import * as http from "http";
^^^^^^

SyntaxError: Unexpected reserved word
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:413:25)
    at Object.Module._extensions..js (module.js:452:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:475:10)
    at startup (node.js:117:18)
    at node.js:951:3

VSCode警告

import http = require("http"); // ES5 require module style

有一些方法可以使用{。1}}样式导入模块打字。* .ts文件,我可以在Typescript中使用Import assignment cannot be used when targeting ECMAScript 6 or higher. Consider using 'import * as ns from "mod"', 'import {a} from "mod"' or 'import d from "mod"' instead. ES6功能吗?

1 个答案:

答案 0 :(得分:1)

  

有什么方法可以使用编写脚本编译* .ts文件使用ES6样式导入模块,我可以使用ES6等功能,例如在Typescript中使用Generator吗?

您需要定位es6,然后在节点中运行之前通过babel传递输出。

这样做的一种方法是使用此处记录的atom-typescript的externalTranspiler功能:https://github.com/TypeStrong/atom-typescript/blob/master/docs/faq.md#can-i-use-an-alternate-transpiler