在JavaScript ES6模块中,如何声明导入符号的类型?

时间:2019-10-11 10:14:46

标签: visual-studio-code

我正在使用自定义构建管道开发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解析输入源字符串或使用内置类型的输入符号的类型吗?

0 个答案:

没有答案