Как ссылаться на определения типов во встроенных скриптах в vscode?

В index.html Я использую проверку типа TS Это прекрасно работает для встроенных объявлений JSDoc, т.е. vscode правильно показывает неверное назначение типа:

<script>
// @ts-check

/**
 * @typedef {Object} SpecialType - a new type
 * @property {number} prop1 - a number
 */

/** @type {SpecialType} */
const x = { prop1: 'invalid number' }; // <-- vscode shows the type error
</script>

Есть ли способ извлечь это определение типа во внешний файл и импортировать его в index.htmlили сделать vscode иначе осведомленным о типе глобально?

Я попробовал следующее, но во всех случаях vscode отсутствовал тип, когда он использовался в index.html:

  • Создать внешний types.js файл, который просто содержит комментарий typedef JSDoc и импортирует его через <script src="..."></script>
  • Создать внешний types.html файл, который просто имеет блок скрипта с комментарием typedef JSDoc и импортирует его через <link rel="import" href="...">
  • Создать global.d.ts файл с соответствующим типом и импортировать его, используя /// <reference path="..." />

1 ответ

Попробуйте создать папку для набора текста, скажем, typings/global, в корне вашего проекта. Затем создайте index.d.ts файл, содержащий ваши объявления TS, и поместите его внутрь global папка.

В вашем tsconfig.json:

"typeRoots": [
    {
       "./node_modules/@types"
       "./typings"
    }
],
"types": [
    "global",
    ...
]

ПРИМЕЧАНИЕ Документация

Если указан typeRoots, будут включены только пакеты в typeRoots

Другие вопросы по тегам