我正在使用自定义构建管道开发Web应用程序,以转换我的源文件并打包可用于浏览器的应用程序。我的源文件是使用import
/ export
语法的ES6模块,但是除相对文件名外,导入源声明在构建管道解决之前没有严格映射到任何文件或包。
因此,IntelliSense无法从我的导入语句中确定正确的类型,我现在正在寻找一种方法来显式声明导入符号的类型。
这些无效:
// default import
/** @type {import("chai")} */ import chai from "..."
import /** @type {import("chai")} */ chai from "..."
// wildcard import
/** @type {import("chai")} */ import * as chai from "..."
import /** @type {import("chai")} */ * as chai from "..."
// destructuring
import { /** @type{import("chai").expect} */ expect } from "..."
import { /** @type{import("chai").ExpectStatic} */ expect } from "..."
// what even... o_O
import { expect as /** @type{import("chai").ExpectStatic} */ expect } from "..."
问题似乎是VSCode不会在ImportSpecifier
内处理JSDoc注释,而是依靠导入源来解决此问题-通过相对文件查找或通过解决已安装的NPM软件包。这意味着我必须在代码中添加嘈杂的多语句咒语,例如:
import * as _chai from "..."
/** @type {import("chai")} */
const chai = _chai
const expect = chai.expect
// or with the built-in typings for chai:
import * as _chai from "..."
/** @type {Chai.ExpectStatic} */
const expect = _chai.expect
有什么方法可以在import语句中声明不依赖VSCode解析输入源字符串或使用内置类型的输入符号的类型吗?