В модуле JavaScript ES6, как я могу объявить тип импортируемого символа? - PullRequest
0 голосов
/ 11 октября 2019

Я занимаюсь разработкой веб-приложения с использованием настраиваемого конвейера сборки для переноса моих исходных файлов и упаковки готового для браузера приложения. Мои исходные файлы - это модули ES6, использующие синтаксис import / export, однако, кроме относительных имен файлов, объявление импорта импорта не имеет строгого сопоставления ни с каким файлом или пакетом, пока оно не будет разрешено конвейером сборки.

Таким образом, 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 не будет обрабатывать комментарии JSDoc внутри ImportSpecifier s, а вместо этого полагается на источник импорта, который может быть разрешен как с помощью относительного поиска файлов, так и путем разрешения установленного пакета 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

Есть ли способ объявить тип импортированного символа в операторе импорта, которыйне полагается на способность VSCode разрешать исходную строку импорта или использует встроенную типизацию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...