gpt4 book ai didi

javascript - 添加 typescript 导入可防止编译为单个 js 文件

转载 作者:行者123 更新时间:2023-12-02 16:51:45 26 4
gpt4 key购买 nike

我使用 grunt-typescript 从一组 ts 文件生成单个 js 文件。在我将导入语句添加到其中一个 ts 文件之前,这一切正常。

grunt-typescript 配置示例

    typescript: {
server: {
src: ["./ts/file1.ts", "./ts/file2.ts"],
dest: "./js/out.js",
options: {
module: 'amd', //or commonjs
target: 'es5', //or es3
basePath: '',
sourcemap: false,
declaration: false,
ignoreError: false
}
}
}

如果我将导入语句添加到 file2.ts 的顶部,例如

import PG = require("pg");

然后我收到错误,File1.ts 中的代码无法找到 File2.ts 中定义的类型,并且在/ts 目录中生成了意外的 File2.js,忽略了 dest 文件参数。导入似乎导致它完全单独编译 File2.ts。

这是导入时所期望的吗?或者我如何修复此问题以创建预期的单个 js 文件而不出现编译错误?

最佳答案

一旦您导入 AMD 模块,或从任何内部模块外部导出,您的文件就会被编译为 AMD 模块。 AMD 和单文件编译本质上是不同的工作模式,不喜欢混合。要了解内部模块与外部模块的信息,请查看 this TypeScript wiki page .

从技术上讲,您仍然可以使用标准 JavaScript 方法导入 AMD 模块,但这很尴尬。例如,使用 require.d.ts来自 DefinelyTyped 的文件:

/// <reference path="require.d.ts"/>

require(["somemodule"], (SomeModule: namespace.SomeModule) => {
// async code called after the module is retrieved
});

如果没有 import 关键字,TypeScript 不会对 require 执行任何操作,让您自行处理。

或者我建议使用完整的 AMD。如果您的任何库是 AMD 的,那么使用起来会更容易,而且您仍然可以 compile down to a single file何时发布。

关于javascript - 添加 typescript 导入可防止编译为单个 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26547819/

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