gpt4 book ai didi

javascript - Typescript 知道 import -> require 但不知道 require -> import?

转载 作者:行者123 更新时间:2023-12-01 02:27:08 24 4
gpt4 key购买 nike

我有一个使用 es6 模块加载器的简单文件:

1.ts

import {foo} from "./2"
foo('hello');

2.ts

function foo (a){console.log(a);};
export {foo}

当 tsconfig 设置为:

"module": "commonjs",

我们可以看到它将 import 转换为 require :

(输出)1.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _2_1 = require("./2");
_2_1.foo('hello');

没关系。但如果我现在通过 require 使用模块加载:

1.ts

var a = require("./2")
a('hello');

2.ts

function foo (a){console.log(a);};
module.exports.foo= foo

并设置"module": "es6",:则输出为:

(输出)1.js

var a = require("./2");  // why it didnt compile it to `import` ??
a('hello');

问题:

TS无法编译requireimport的原因是什么?

最佳答案

TypeScript 在 ECMAScript 版本的导入语法上标准化了它们的语法。您的所有 TypeScript 代码都应使用此样式:

import { ZipCodeValidator } from "./ZipCodeValidator";

编译器很乐意将其转换为 AMD、CommonJS 或 System 样式的导入 - 但它不会单向地从其中每一个映射到其中的每一个。

所以简短的版本是,编写 ECMAScript 导入并使用编译器标志将它们转换为您喜欢的任何内容。

顺便说一句,当实际打算使用 ECMAScript 模块加载器时,可以在 import 语句中添加 .js - 即 TypeScript 理解您的意思。

关于javascript - Typescript 知道 import -> require 但不知道 require -> import?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48664840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com