2017-08-10 39 views
0

我目前正在學習javascript開發 - typescript,node.js和express。有一些我不明白:爲什麼TS不生成純JavaScript代碼,但它會生成一個node.js函數?

Typescript是一個JavaScript超集,它應該從typescript語法生成一個經典的javascript代碼,對嗎?有了這個代碼在app.ts文件在我的Node.js項目導入模塊:

import * as express from 'express'; 

,與此代碼生成app.js文件:

Object.defineProperty(exports, "__esModule", { value: true }); 
// Include dependencies 
var express = require("express"); 

AFAIK的require()功能是不是一個「經典」 javascript函數,但它是一個用於導入模塊的Node.js函數。這是我不明白:

爲什麼TS不生成純JavaScript代碼,但它會生成一個node.js函數?

如果我將使用typescript作爲非node.js項目?打字稿是否會生成一個不存在的require()函數?我錯過了什麼?

+0

'require'不純的JavaScript怎麼樣? – PeterMader

+0

我讀過'require()'的地方,它只支持目前使用的設備和瀏覽器尚未廣泛支持的ECMAscript的最新版本。 – Incredible

+1

這不是真的。 'require'是CommonJS的一部分,NodeJS實現CommonJS。你告訴TypeScript編譯成CommonJS,所以它會給你CommonJS代碼。 – PeterMader

回答

1

在你tsconfig.json你有這樣

"module": "es2015", 
"moduleResolution": "node", 

這就是爲什麼你的打字稿正在產生這樣的代碼行。如果您想更改目標模塊系統,則必須更改配置。

+0

哦,這是TS配置的問題。在我的情況下,有「目標」:「es5」,「模塊」:「commonjs」,「 – Incredible

相關問題