[英]Augmenting a class that is also a namespace from a separate file in 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.