我有一个扩展 2 个其他接口的接口。
除了一件事外,新接口是相同的:字段 '_id' 应该是字符串而不是 ObjectId(为了更容易的服务器端操作)。
是否可以覆盖新界面中的字段类型?当我这样做时,tslint 告诉新接口没有正确扩展以前的接口。
我也想避免联合类型,例如: _id : ObjectId | string
export interface AchievementDb {
_id: ObjectID;
title: string;
description: string;
// more stuff
}
export interface AchievementUserProgress {
_id: ObjectID;
progress: number;
status: UserAchievementStatus;
// more stuff
}
export interface AchievementFull extends AchievementDb, AchievementUserProgress {
_id: string;
}
Run Code Online (Sandbox Code Playgroud) 如何在第一次测试失败时中断所有赛普拉斯测试?
我们正在使用 semaphore 为每个 PR 使用 Cypress 启动完整的 e2e 测试。但这需要太多时间。
我想在第一次测试失败时中断所有测试。
获取完整的错误是每个开发人员在开发时的工作。如果在部署之前有任何问题,我只想尽快得到通知,而不必等待完整的测试完成。
到目前为止,我想出的唯一解决方案是使用 Cypress 中断对当前规范文件的测试。
afterEach(() => {
if (this.currentTest.state === 'failed') {
Cypress.runner.end();
}
});
Run Code Online (Sandbox Code Playgroud)
但这还不够,因为它只中断位于规范文件中的测试,而不是所有其他文件。我今天对这个问题做了一些深入的搜索,这似乎不是 Cypress 的事情。
所以我正在尝试其他解决方案。
1:带信号量
fail_fast:
stop:
when: "true"
Run Code Online (Sandbox Code Playgroud)
它应该在出错时中断脚本。但它不起作用:测试在出错后继续运行。我的猜测是 Cypress 只有在所有测试都完成后才会抛出错误。
2:也许随着脚本启动 Cypress,但我没有想法现在这里是我的脚本
"cy:run": "npx cypress run",
"cy:run:dev": "CYPRESS_env=dev npx cypress run",
"cy:test": "start-server-and-test start http-get://localhost:4202 cy:run"
Run Code Online (Sandbox Code Playgroud) 简单的问题,但我有疑问,找不到答案。
假设你有这个枚举:
export enum fooEnum {
Foo = 'foo',
Bar = 'bar'
}
Run Code Online (Sandbox Code Playgroud)
那么这样输入我的函数参数可以吗?意思是'我希望收到一个字符串 'foo' 或 'bar' 作为参数并期望返回 'foo' 或 'bar'
function doStuff(myParam: FooEnum): FooEnum {
return myParam;
};
Run Code Online (Sandbox Code Playgroud) 我有一个对象 foo
interface Foo {
fooId: string;
otherStuff: any;
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个对象 fooCollection,它是一个包含未定义数量的 foos 的对象。每个属性都是一个等于 fooId 的字符串。如何为 fooCollection 定义准确的接口?
到目前为止,我想出了这个:
interface FooCollection {
[key: string]: Foo;
}
Run Code Online (Sandbox Code Playgroud)
- 我怎么能告诉 ts 财产的数量可以是任何东西?
- 我可以更准确地说明道具名称,说它是 fooId 而不是任何字符串吗?
我正在尝试定义一个包含对象的对象模型。该对象可以是两种不同类型的对象。
export interface EventParams {
evtType: string;
evtData: FaultOrGoalData| SwapData;
}
export interface FaultOrGoalData {
evtName: string;
player: string;
position: string;
}
export interface SwapData {
swapPlayer: string;
}
Run Code Online (Sandbox Code Playgroud)
我在这里的问题是ts lint告诉我,不可能访问封装对象中包含的数据。
例: params.evtData.evtName
因此,我的问题是:是否可以使用接口创建联合类型?
typescript ×4
interface ×2
cypress ×1
e2e-testing ×1
enums ×1
semaphore ×1
tslint ×1
union-types ×1