【问题标题】:Why is TS not generating a pure javascript code but it generates a node.js function?为什么 TS 不生成纯 javascript 代码,而是生成 node.js 函数?
【发布时间】:2017-08-10 11:28:20
【问题描述】:

我目前正在学习 javascript 开发 - typescript、node.js 和 express。有一点不明白:

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() 函数吗?我错过了什么?

【问题讨论】:

  • require 不纯的 JavaScript 怎么样?
  • 在某处我读到require() 仅受当前使用的设备和浏览器尚未广泛支持的最新版本的 ECMAscript 支持。
  • 这不是真的。 require 是 CommonJS 的一部分,NodeJS 实现了 CommonJS。你告诉 TypeScript 编译成 CommonJS,所以它会给你 CommonJS 代码。
  • 哦,好的。但是,您所说的“不正确”具体是什么意思? require() 不是/不会是最新 JS 版本的原生函数?
  • 我的意思是 require 不是 ECMAScript 的一部分,并且可能永远不会被任何浏览器支持。

标签: javascript node.js typescript module


【解决方案1】:

在您的tsconfig.json 中有这样的行

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

这就是你的打字稿生成这样一个代码的原因。如果要更改目标模块系统,则必须更改配置。

【讨论】:

  • 哦,是TS配置的问题。就我而言,有"target": "es5", "module": "commonjs",
猜你喜欢
  • 1970-01-01
  • 2017-12-03
  • 2019-10-06
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多