Typescript 如何将函数添加到命名空间
我有一个基于Typescript 如何将函数添加到命名空间,typescript,lunrjs,Typescript,Lunrjs,我有一个基于lunr和lunr多语言的Node.js typescript应用程序。已加载@type/lunr,但不存在lunr多语言的类型定义。试图向源代码中添加一些内容以满足编译器的要求。这是原始代码: import lunr from "lunr"; require("lunr-languages/lunr.stemmer.support")(lunr); require("lunr-languages/lunr.multi")(lunr); require("lunr-languages
lunr
和lunr多语言的Node.js typescript应用程序。已加载@type/lunr
,但不存在lunr多语言的类型定义。试图向源代码中添加一些内容以满足编译器的要求。这是原始代码:
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");
Typescript抱怨:错误TS2339:type'typeof import(“D:/Project/node\u modules/@types/lunr/index.D.ts”)上不存在属性“multiLanguage”。
我尝试添加(基于lunrindex.d.ts
definition文件):
在lunr模块导入之前或之后,但错误仍然存在。
Typescript文档谈到了类型合并,但在这里我看不到应该在哪里查找。谢谢 如果查看lunr
定义文件,您可以看到:
export as namespace lunr;
export = lunr;
因此,为了扩展它,您声明:
declare namespace lunr
{
function multiLanguage(a: string, b: string): any;
}
如果查看lunr
定义文件,您可以看到:
export as namespace lunr;
export = lunr;
因此,为了扩展它,您声明:
declare namespace lunr
{
function multiLanguage(a: string, b: string): any;
}
不幸的是,它没有合并到名称空间中,它覆盖了名称空间,因此它开始抱怨lunr.tokenizer
缺少等等。我为自己感到羞愧。解决方法是编辑lunr定义文件(node_modules/lunr/index.d.ts
),并在generateStopWordFilter
定义:函数多语言(lang1:string,lang2:string):任意代码>应该合并并为我这样做。我强烈建议不要修改node\u modules
中的内容,因为更新模块可能会覆盖您的更改。@SiliconValley:根据ts编译器配置,您可能需要将声明文件重命名为lunr.d.ts
。不幸的是,这没有合并到命名空间中,它覆盖了名称空间,所以它开始抱怨lunr.tokenizer
丢失等等。我为自己感到羞愧。解决方法是编辑lunr定义文件(node_modules/lunr/index.d.ts
),并在generateStopWordFilter
定义:函数多语言(lang1:string,lang2:string):任意代码>应该合并并为我这样做。我强烈建议不要修改node_modules
中的内容,因为更新模块可能会覆盖您的更改。@SiliconValley:根据ts编译器配置,您可能需要将声明文件重命名为lunr.d.ts
。您好,我现在对“lunr.multi language”也有同样的问题,你能告诉我你是如何解决这个问题的吗?见下面最后三条评论。我现在对“lurn.multiLanguage”也有同样的问题。你能告诉我你是如何解决这个问题的吗?见下面最后三条评论