【问题标题】:How to extend another modules declaration file?如何扩展另一个模块声明文件?
【发布时间】:2021-01-18 15:36:09
【问题描述】:

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

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

但是,由于 Adonis 使用 @ioc: 前缀,webstorm 对类型一无所知。为了解决这个问题,您可以在/contracts 目录中声明一个打字稿定义文件,如下所示:

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;
}

我对打字稿还很陌生,所以如果这相当简单并且我遗漏了一些东西,我深表歉意。

【问题讨论】:

    标签: typescript adonis.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多