typescript - 在打字稿的声明文件中增加命名空间
问题描述
我正在尝试将命令添加到赛普拉斯命名空间。我创建了一个commands.d.ts
文件:
从'axe-core'导入{ElementContext,RunOptions};从'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;
}
}
我的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 抱怨:
“Chainable”类型上不存在属性“checkA11yAndReportViolations”。
解决方案
对我来说没问题,也许你忘了实现接口
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;
}
}
索引.ts
import { Demo } from './integration/spec'
const d = new Demo()
d.checkA11yAndReportViolations()
结果
~/Documents/Dev/github/demo
❯ ts-node ./index.ts
CALLED checkA11yAndReportViolations
推荐阅读
- angular - NgRx 注销效果未触发
- excel - 如果使用“循环”在A中的值,VBA将数据验证添加到B和C
- c# - 使用页面对象模式验证元素的状态
- vba - Microsoft Visual Basic 中 Dim 指令的奇怪行为
- python - python中的Kivy弹出窗口,按钮上有多个on_release操作
- javascript - 创建按钮加载状态
- mysql - mysql+日期对比
- c# - 父子组件关系中的 Blazor Server 呈现模式
- postgresql - 为什么我在使用 ST_Area 时得到错误的值
- networking - 我想在虚拟机上使用 Informatica 将一些数据从 db2 v5 服务器 ETL 到另一台具有 sql server 2017 的服务器