Typescript + Cypress 预期 X 参数,但使用链式方法得到 X-1 错误 2551

Typescript + Cypress Expected X arguments, but got X-1 error 2551 with chained methods

我试图在使用 Cypress 自定义命令时消除 Typescript 中的错误 2551(“预期有 2 个参数,但得到了 1 个”)。现在我有:

declare global {
  namespace Cypress {
    interface Chainable<Subject> {
      randomSubset(arr, sampleSize): Chainable<Subject>
    }
  }
}
Cypress.Commands.add('randomSubset', {prevSubject: true}, (arr, sampleSize){...}

然而,当我尝试使用它时:

cy.get('li').randomSubset(0.1).each(...);

我收到上述错误。如何让 Typescript 编译器识别第一个参数来自链式函数 return,而不是显式传递?

编辑:请注意,代码运行正确,只是试图解决 Typescript 警告

所以这个问题是基于对 Cypress.Commands.add() 函数定义的误解。如果 prevSubject: true ,则 Cypress.Commands.add() 函数将第三个参数作为主题,并将任何后续参数作为自定义函数的选项。

因此,为了解决这个问题,我更正了类型声明:

declare global {
  namespace Cypress {
    interface Chainable<Subject> {
      randomSubset(sampleSize): Chainable<Subject>
    }
  }
}

并保持其他一切不变。这消除了错误。