【问题标题】:@types/hapi__hapi error TS2314: Generic type 'Listener' requires 1 type argument(s)@types/hapi__hapi 错误 TS2314:通用类型“侦听器”需要 1 个类型参数
【发布时间】:2021-04-12 03:11:33
【问题描述】:

hapi 新手并在 Typescript 中使用版本 "@hapi/hapi": "^20.1.2"。当我添加包“@types/hapi__hapi”:“^20.0.6 时,@types/hapi__hapi 与其依赖项@types/hapi__podium 之间存在类型不匹配。我收到以下错误:

node_modules/@types/hapi__hapi/index.d.ts:254:18 - error TS2430: Interface 'RequestEvents' incorrectly extends interface 'Podium'.
  Types of property 'on' are incompatible.
    Type '{ (criteria: "peek", listener: PeekListener): void; (criteria: "finish" | "disconnect", listener: (data: undefined) => void): void; }' is not assignable to type '<Tcontext extends object = this>(criteria: string | CriteriaObject, listener: Listener<Tcontext>, context?: Tcontext) => this'.
      Types of parameters 'listener' and 'listener' are incompatible.
        Types of parameters 'tags' and 'encoding' are incompatible.
          Type 'string' is not assignable to type '{ [tag: string]: true; }'.

254 export interface RequestEvents extends Podium {
                     ~~~~~~~~~~~~~

node_modules/@types/hapi__hapi/index.d.ts:514:32 - error TS2709: Cannot use namespace 'Boom' as a type.

514     response: ResponseObject | Boom;
                                   ~~~~

node_modules/@types/hapi__hapi/index.d.ts:627:18 - error TS2430: Interface 'ResponseEvents' incorrectly extends interface 'Podium'.
  Types of property 'on' are incompatible.
    Type '{ (criteria: "peek", listener: PeekListener): void; (criteria: "finish", listener: (data: undefined) => void): void; }' is not assignable to type '<Tcontext extends object = this>(criteria: string | CriteriaObject, listener: Listener<Tcontext>, context?: Tcontext) => this'.
      Types of parameters 'listener' and 'listener' are incompatible.
        Types of parameters 'tags' and 'encoding' are incompatible.
          Type 'string' is not assignable to type '{ [tag: string]: true; }'.

627 export interface ResponseEvents extends Podium {
                     ~~~~~~~~~~~~~~

node_modules/@types/hapi__hapi/index.d.ts:2357:43 - error TS2314: Generic type 'Listener' requires 1 type argument(s).

2357     removeListener(criteria: K, listener: Podium.Listener): this;
                                               ~~~~~~~~~~~~~~~

node_modules/@types/hapi__hapi/index.d.ts:2375:18 - error TS2430: Interface 'ServerEvents' incorrectly extends interface 'Podium'.
  The types returned by 'on(...)' are incompatible between these types.
    Type 'void' is not assignable to type 'this'.
      'this' could be instantiated with an arbitrary type which could be unrelated to 'void'.

2375 export interface ServerEvents extends Podium {
                      ~~~~~~~~~~~~

node_modules/@types/hapi__hapi/index.d.ts:2441:44 - error TS2314: Generic type 'Listener' requires 1 type argument(s).

2441     removeListener(name: string, listener: Podium.Listener): Podium;
                                                ~~~~~~~~~~~~~~~

node_modules/@types/hapi__hapi/index.d.ts:4057:18 - error TS2709: Cannot use namespace 'Boom' as a type.

4057         (Error | Boom) |
                      ~~~~

node_modules/@types/hapi__inert/node_modules/@types/hapi__hapi/index.d.ts:260:18 - error TS2430: Interface 'RequestEvents' incorrectly extends interface 'Podium'.
  Types of property 'on' are incompatible.
    Type '{ (criteria: "peek", listener: PeekListener): void; (criteria: "finish" | "disconnect", listener: (data: undefined) => void): void; }' is not assignable to type '<Tcontext extends object = this>(criteria: string | CriteriaObject, listener: Listener<Tcontext>, context?: Tcontext) => this'.
      Types of parameters 'listener' and 'listener' are incompatible.
        Types of parameters 'tags' and 'encoding' are incompatible.
          Type 'string' is not assignable to type '{ [tag: string]: true; }'.

260 export interface RequestEvents extends Podium {
                     ~~~~~~~~~~~~~

node_modules/@types/hapi__inert/node_modules/@types/hapi__hapi/index.d.ts:633:18 - error TS2430: Interface 'ResponseEvents' incorrectly extends interface 'Podium'.
  Types of property 'on' are incompatible.
    Type '{ (criteria: "peek", listener: PeekListener): void; (criteria: "finish", listener: (data: undefined) => void): void; }' is not assignable to type '<Tcontext extends object = this>(criteria: string | CriteriaObject, listener: Listener<Tcontext>, context?: Tcontext) => this'.
      Types of parameters 'listener' and 'listener' are incompatible.
        Types of parameters 'tags' and 'encoding' are incompatible.
          Type 'string' is not assignable to type '{ [tag: string]: true; }'.

633 export interface ResponseEvents extends Podium {
                     ~~~~~~~~~~~~~~

node_modules/@types/hapi__inert/node_modules/@types/hapi__hapi/index.d.ts:2365:43 - error TS2314: Generic type 'Listener' requires 1 type argument(s).

2365     removeListener(criteria: K, listener: Podium.Listener): this;
                                               ~~~~~~~~~~~~~~~

node_modules/@types/hapi__inert/node_modules/@types/hapi__hapi/index.d.ts:2383:18 - error TS2430: Interface 'ServerEvents' incorrectly extends interface 'Podium'.
  The types returned by 'on(...)' are incompatible between these types.
    Type 'void' is not assignable to type 'this'.
      'this' could be instantiated with an arbitrary type which could be unrelated to 'void'.

2383 export interface ServerEvents extends Podium {
                      ~~~~~~~~~~~~

node_modules/@types/hapi__inert/node_modules/@types/hapi__hapi/index.d.ts:2449:44 - error TS2314: Generic type 'Listener' requires 1 type argument(s).

2449     removeListener(name: string, listener: Podium.Listener): Podium;
                                                ~~~~~~~~~~~~~~~

新版本有问题吗?我该如何解决这个问题/是否有可行的版本回滚?

当前 package.json 文件:

...
  "dependencies": {
    "@hapi/hapi": "^20.1.2",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "nodemon": "^2.0.7",
    "ts-node-dev": "^1.1.6",
    "tslint": "^6.1.3",
    "typescript": "^4.2.4"
  },
  "devDependencies": {
    "@types/hapi__hapi": "^20.0.6"
  }
...

【问题讨论】:

    标签: typescript types yarnpkg hapi


    【解决方案1】:

    他们已经在看它了; https://github.com/hapijs/hapi/issues/4240

    【讨论】:

      猜你喜欢
      • 2017-02-08
      • 2020-12-06
      • 2022-08-04
      • 2023-03-06
      • 2015-12-06
      • 2022-08-11
      • 2021-10-24
      • 2020-10-26
      • 2017-06-05
      相关资源
      最近更新 更多