Импортируйте файл js в TypeScript, не связывая его с Rollup - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть простая конфигурация TypeScript + накопительный пакет, см. минимальный рабочий пример здесь .

Структура папок выглядит следующим образом:

src/mwe.ts
vendor/verovio.js    <-- library, that I would like to use
vendor/verovio.d.ts  <-- content (for now): declare module 'verovio'

Теперь я пытаюсьиспользовать verovio.js внутри моего mwe.ts:

import * as verovio from '../vendor/verovio.js'

export default class DummyClass {
  constructor() {
    let foo: any = new verovio.toolkit()
  }
}

Моя цель - просто скопировать библиотеку js в папку dist вместо того, чтобы связать ее с моей собственной библиотекой при выполнении компилятора js и Rollup,Я просто не понимаю, как это сделать.Насколько я вижу, проблема состоит из двух вещей:

  1. Определение типа не обрабатывается правильно: error TS2306: File '[...]/mwe/vendor/verovio.d.ts' is not a module.
  2. Свертывание не знает, как обрабатывать JSфайл правильно.

1 Ответ

0 голосов
/ 23 ноября 2018

Вы пытаетесь загрузить файл как модуль.Вместо того, чтобы указывать файл JS напрямую, вы должны сделать файл .d.ts известным компилятору (например, через tsconfig.json или напрямую через импорт) и просто импортировать модуль впоследствии.

import '../vendor/verovio';
import * as verovio from 'verovio';

export default class DummyClass {
  constructor() {
    let foo: any = new verovio.toolkit()
  }
}

Я отправил вамзапрос на получение https://github.com/sonovice/mwe-ts-verovio-import/pull/1, который делает это, а также обновляет наборы в соответствии с документацией библиотеки поставщика.Я также отредактировал конфигурацию Rollup, чтобы скопировать библиотеку вендора, хотя это не идеально, поскольку ваша библиотека не требует () библиотеки вендора.Было бы лучше указать это как зависимость и позволить загрузчику модулей позаботиться о require ().

...