带扩展名的 TypeScript 导入

Dav*_*nan 5 typescript webpack deno

您可能听说过 Deno,它是一个新的 TypeScript 运行时。

Deno 和普通 TypeScript 之间的一个主要区别是您必须在 import 语句中包含文件扩展名。例如:

import foo from './bar.ts'
                       ^^
Run Code Online (Sandbox Code Playgroud)

我想编写与 Deno 和 Webpack 兼容的代码。

如何配置 Webpack 以允许使用.ts上述扩展名进行导入?

另外,如何防止以下 VSCode 错误?

在此输入图像描述

Mat*_*her 4

可以将 Webpack 配置为使用解析属性解析所有导入的扩展。如果扩展列表中有空字符串,webpack 也将接受具有完整扩展名的导入。空字符串应该是列表中的第一个条目。

module.exports = {
 // ...
 resolve: {
   extensions: ['', '.ts', '.tsx' /*etc ...*/],
 }
}
Run Code Online (Sandbox Code Playgroud)

如果要使用的扩展列表中没有空字符串,则 webpack 将尝试导入类似的内容./bar.ts.ts而不是./bar.ts.

您可以使用以下注释从 ts-compiler 禁用 VSCode 中的警告

// @ts-ignore TS6133
import foo from './bar.ts'
Run Code Online (Sandbox Code Playgroud)