typescript :如何增广'export = Joi.Root'

laik7k3q  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(118)

@hapi/joi的类型似乎已经过时了--一些在官方文档中提到的配置参数在类型中丢失了,所以我试图增加类型。

  • 节点模块/@类型/hapi__joi/索引.d.ts*:
declare namespace Joi {
...
interface ErrorFormattingOptions {...}
...
interface Root {...}
}

declare const Joi: Joi.Root;
export = Joi;

我的.ts源文件之一:

import joi from '@hapi/joi'

declare global {
  namespace Joi {
    interface ErrorFormattingOptions {
      wrap?: {
        label?: string | false
        array?: string | false
      }
    }
  }
}

那不管用

type R = Joi.ErrorFormattingOptions['']//autocomplete show only my 'wrap'

在这种情况下,正确的增强方法是什么?谢谢。

更新:看起来不可能。模块'@hapi/joi'没有命名的导出ErrorFormattingOptions。并且在Typescript中不能增加未导出的内容

bq3bfh9z

bq3bfh9z1#

我对aught joi的最接近的扩展是添加了一个新方法
joi-objectid.d.ts

declare module 'joi-objectid' {
  import Joi from 'joi';

  function objectId(): Joi.AlternativesSchema;

  function joiObjectId(joi: Joi.Root, message?: string): typeof objectId;

  export = joiObjectId;
}

joi.d.ts

import joiObjectId from 'joi-objectid';

declare module 'joi' {
  interface Root {
    objectId(): joiObjectId;
  }
}

类似地,您可以尝试直接在joi模块上扩展ErrorFormattingOptions接口,而不覆盖加载到全局作用域上的接口。

相关问题