tsc 编译使用文件扩展名导入的打字稿

2023-12-27

我以独立于生态系统的方式编写打字稿代码。我决定在导入中包含文件扩展名,以匹配 Web 和 Deno。

import xyz from "./foo.ts";

我怎样才能获得打字稿编译器(tsc)编译这些文件不会出现以下错误:

error TS2691: An import path cannot end with a '.ts' extension.

到目前为止,我已经尝试了以下方法tsconfig.json无济于事:

{
    "compilerOptions": {
        "paths": {
            "*.js": ["*"],
            "*.ts": ["*"]
        },
        ...
    },
    ...
}

你可以通过告诉编译没有错误tsc忽略所有这些import声明。

// @ts-ignore
import xyz from "./foo.ts";

要理解为什么你无法通过配置摆脱它,我们必须深入研究 TypeScript 不希望你使用.ts内部的扩展import陈述。

tsc不会重写模块文件名,所以如果你给它

import xyz from "./foo.ts"

它不会产生foo.js文件,生成的编译后的 ECMAScript(无论您指定的版本)仍然显示要导入./module.ts。由于编译为 ECMAScript 的目的是摆脱 TypeScript 文件,因此引用.ts输出中的文件显然不好。

你想要的已经在 TypeScript GitHub issues 中提出(参见#27481 https://github.com/Microsoft/TypeScript/issues/27481, #11901 https://github.com/microsoft/TypeScript/issues/11901)。您可以考虑加入 GitHub 上的讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tsc 编译使用文件扩展名导入的打字稿 的相关文章

随机推荐