如何扩展另一个模块声明文件?



我有一个AdonisJS项目,并且遇到了一个关于声明文件的问题。Adonis的IoC容器利用ES6导入加载器钩子来解析依赖关系。例如,如果我想导入User模型,它看起来像这样:

import User from "@ioc:App/Models/User";

然而,由于Adonis使用@ioc:前缀,webstorm不知道任何关于类型的信息。为了解决这个问题,你可以在/contracts目录下声明一个typescript定义文件,看起来像这样:

declare module "@ioc:App/Models/User" {
}

但这仍然没有真正帮助,因为现在我的User模型没有任何键入信息。

我想做的是扩展的定义从基础Model类,"@ioc:Adonis/Lucid/Model","@ioc:App/Models/Users",与选项添加任何属性或方法,可能包含在该模型类。到目前为止,我尝试了这样的东西,但它似乎不做我想要的:

declare module "@ioc:App/Models/User" {
import Model from "@ioc:Adonis/Lucid/Model";
export default Model;
}

我对打字很不熟悉,所以如果这是相当直接的,我很抱歉我遗漏了一些东西。

似乎我的方法是正确的,但我使用了框架提供的错误类,因为模型扩展BaseModel,而不是Model。这就是我想要的:

declare module "@ioc:App/Models/User" {
import { BaseModel } from "@ioc:Adonis/Lucid/Orm";
export default BaseModel;
}

最新更新