TypeScript/Cypress 只接受定义的参数值的命令

TypeScript/Cypress command which accept only defined value of parameter

我写了带有参数的 cypress 命令,我想将它更改为函数只接受某些值,例如我希望 columnValue 只能是 'xxx' 或 'yyy' 或 'zzz'。我该怎么做?

Cypress.Commands.add('addColumnAsDimension', (columnName: string) => {
  chartMenu.addColumnButton.click();
  chartMenu.columnNameButton(columnName).click();
  chartMenu.addAsDimensionButton.click();
});

您可以为此使用 union type

type Column = 'xxx' | 'yyy' | 'zzz'

Cypress.Commands.add('addColumnAsDimension', (columnName: Column) => {
  chartMenu.addColumnButton.click();
  chartMenu.columnNameButton(columnName).click();
  chartMenu.addAsDimensionButton.click();
});

此外,如果您希望编译器检查您自定义的 Cypress 方法调用,您还必须为该方法添加一个 type definition

declare namespace Cypress {
  interface Chainable<Subject> {
       addColumnAsDimension(columnName: Column): void
    }
}

现在编译器检查你的参数: