如何向名称空间添加功能

时间:2019-02-21 14:24:04

标签: typescript lunrjs

我有一个基于lunrlunr-multilanguage的Node.js打字稿应用程序。已加载@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")'.

我尝试添加(基于lun index.d.ts定义文件):

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

在lunr导入之前或之后,但是错误仍然存​​在。 打字稿文档谈到了类型合并,但是在这里我看不到要看的地方。谢谢!

1 个答案:

答案 0 :(得分:0)

如果您查看lunr定义文件,则会看到:

export as namespace lunr;
export = lunr;

因此要扩展它,您需要声明:

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