Объявления TypeScript для модуля JavaScript

Недавно я начал использовать библиотеку Node под названием bpmn-js (npmjs.com).
Он написан на JavaScript, и я хотел бы иметь типизацию. Таким образом, я начал читать о d.ts файлах.

Я создал эту структуру папок

webapp
  @types
     bpmn-js
       index.d.ts

С простым содержанием

declare module 'bpmn-js' {
  export class BpmnJS {
    constructor();
  }
}

Но это, кажется, не работает.


«До» ввода я смог импортировать нужный мне объект, используя

import BpmnJS from 'bpmn-js';

И я смог создать его, используя

new BpmnJS();

Как я могу распознать файл типизации?
Я использую WebStorm 2019.1.*.

ты пробовал npm install @types/bpmn-js первый?

messerbill 22.05.2019 14:53

@messerbill, к сожалению, для этой библиотеки нет типов

LppEdd 22.05.2019 14:54

@messerbill решен, смотрите ниже!

LppEdd 22.05.2019 15:23

а, ладно, я думаю, вы также можете использовать свою первую версию, если вы напишете свой оператор включения следующим образом: import {BpmnJs} from 'bpmn-js' - использование {} в операторах импорта означает, что вы нет хотите импортировать default export, но простой export

messerbill 22.05.2019 21:34

@messerbill Я пытался, но Webpack выдавал ошибку «не конструктор» для new BpmnJS()

LppEdd 22.05.2019 21:47
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
0
5
816
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Довольно просто, мне не хватало export default, или, лучше сказать, части default.

declare module 'bpmn-js' {
  export default class BpmnJS {
    constructor(param?: { container: string });
    ...
  }
}

Теперь это тоже работает

import BpmnJS from 'bpmn-js';

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