Как написать файл определения типа для экспортируемого по умолчанию класса? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь написать файл определения типа для OpenSubtitles.org API-упаковщика узла . Вот основной файл index.js . В строке 7 класс OpenSubtitles экспортируется как экспорт модуля по умолчанию.

module.exports = class OpenSubtitles {
....
}

Итак, я придумал следующее

declare module "opensubtitles-api" {
  export default class OpenSubtitles {
  }
}

Это передача кода с использованием OpenSubtitles.org api node wrapper и моего файла .d.ts.

"use strict";
exports.__esModule = true;
var opensubtitles_api_1 = require("opensubtitles-api");
var os = new opensubtitles_api_1["default"]({
    useragent: "TemporaryUserAgent"
});

и когда я запускаю его. Я получаю эту ошибку.

var os = new opensubtitles_api_1["default"]({
         ^

TypeError: opensubtitles_api_1.default is not a constructor

Когда я удаляю часть ["default"] переданного кода, все работает как ожидалось.

Желаемая транспиляция

"use strict";
exports.__esModule = true;
var opensubtitles_api_1 = require("opensubtitles-api");
var os = new opensubtitles_api_1({
    useragent: "TemporaryUserAgent"
});

Как мне экспортировать / объявить OpenSubtitles класс?

1 Ответ

0 голосов
/ 12 января 2019

Экспорт по умолчанию отличается от того, когда вы заменяете весь объект экспорта. Синтаксис для этого:

declare module "opensubtitles-api" {
   class OpenSubtitles {
   }
   export = OpenSubtitles
}
...