Как добавить функцию в пространство имен - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение для машинописи Node.js, основанное на lunr и lunr-multilanguage.Загружен @type/lunr, но для lunr-multilanguage не существует определения типа.Попытка добавить что-то в мой исходный код, чтобы удовлетворить компилятор.Это оригинальный код:

import lunr from "lunr";
require("lunr-languages/lunr.stemmer.support")(lunr);
require("lunr-languages/lunr.multi")(lunr);
require("lunr-languages/lunr.it")(lunr);
const englishItalianSupport = lunr.multiLanguage("en", "it");

Машинопись жалуется: error TS2339: Property 'multiLanguage' does not exist on type 'typeof import("D:/Project/node_modules/@types/lunr/index.d.ts")'.

Я пытался добавить (основываясь на файле определения index.d.ts lunr):

declare module "lunr" {
    namespace lunr {
        class Index {
            multiLanguage(a: string, b: string): any;
        }
    }
}

до или после импорта модуля lunr, но ошибка сохраняется.Документация по Typescript говорит о слиянии типов, но здесь я не вижу, где искать.Спасибо!

1 Ответ

0 голосов
/ 21 февраля 2019

Если вы посмотрите на файл определения lunr, вы увидите:

export as namespace lunr;
export = lunr;

Итак, чтобы расширить его, вы объявляете:

declare namespace lunr
{
    function multiLanguage(a: string, b: string): any;
}
...