繁体   English   中英

在typescript中的声明文件中扩充命名空间

[英]augmenting namespace in declaration file in typescript

我正在尝试将命令添加到赛普拉斯命名空间。 我创建了一个commands.d.ts文件:

从'ax-core'导入{ElementContext,RunOptions}; 从'ax-core'导入{Result};

export type ViolationCallback = (violations: Result[]) => void;

declare namespace Cypress {
  interface Chainable<Subject = any> {
    checkA11yAndReportViolations(context?: ElementContext, options?: RunOptions): void;
    checkA11yLocal(context?: ElementContext, options?: RunOptions, violationCallback?: ViolationCallback): void;
  }
}

我的tsconfig.json看起来像这样:

{
  "compilerOptions": {
    "baseUrl": "../node_modules",
    "target": "es6",
    "isolatedModules": false,
    "module": "commonjs",
    "types": [
      "cypress",
      "node"
    ]
  },
  "include": [
    "integration/**/*.ts",
    "support/*.ts",
    "../node_modules/cypress"
  ]
}

我的commands.d.ts文件位于上面包含中引用的support文件夹中,但是当我尝试在integration/spec.ts调用该函数时:

cy.checkA11yAndReportViolations();

tsc抱怨:

属性'checkA11yAndReportViolations'在'Chainable'类型上不存在。

对我来说工作正常,也许你忘了实现界面

tsconfig.json

{
  "compilerOptions": {
    "baseUrl": "../node_modules",
    "target": "es6",
    "isolatedModules": false,
    "module": "commonjs",
    "types": [
      "cypress",
      "node"
    ]
  },
  "include": [
    "integration/**/*.ts",
    "support/*.ts",
    "../node_modules/cypress"
  ]
}

集成/ spec.ts

import { Cypress } from '../support/commands'

export class Demo implements Cypress.Chainable {
  checkA11yAndReportViolations () {
    console.log('CALLED checkA11yAndReportViolations')
  }
  checkA11yLocal () {
    console.log('CALLED checkA11yLocal')
  }
}

支持/ commands.d.ts

import { ElementContext, RunOptions } from 'axe-core';
import { Result } from 'axe-core';

export type ViolationCallback = (violations: Result[]) => void;

declare namespace Cypress {
  interface Chainable<Subject = any> {
    checkA11yAndReportViolations(context?: ElementContext, options?: RunOptions): void;
    checkA11yLocal(context?: ElementContext, options?: RunOptions, violationCallback?: ViolationCallback): void;
  }
}

index.ts

import { Demo } from './integration/spec'

const d = new Demo()

d.checkA11yAndReportViolations()

结果

~/Documents/Dev/github/demo
❯ ts-node ./index.ts
CALLED checkA11yAndReportViolations

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM