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>
}
}
}
并保持其他一切不变。这消除了错误。
我试图在使用 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>
}
}
}
并保持其他一切不变。这消除了错误。