首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“delete”运算符的操作数必须是可选的。在index.test.tsx中

“delete”运算符的操作数必须是可选的。在index.test.tsx中
EN

Stack Overflow用户
提问于 2022-04-01 15:00:00
回答 1查看 422关注 0票数 -1

我刚开始使用TS,现在我正在运行一个测试,使用的是对react/类型记录的玩笑,并且我从类型脚本中得到了这个错误,上面写着The operand of a 'delete' operator must be optional.,我无法找到停止TS的方法来停止喊我已经尝试过了

代码语言:javascript
运行
复制
interface Thing {
  prop: string | undefined;
}

但是它不适用于jest,测试也因此失败,请注意,这是我的代码片段

代码语言:javascript
运行
复制
  it('mergeFirestoreData', () => {
    const returnValue = mergeFirestoreData(`/${collectionNames.PERMITS}/id`, new PermitCore(), new PermitSwarm());
    const finalReturn = new Permit();
    delete finalReturn['endPermitReason']; //The operand of a 'delete' operator must be optional.ts(2790)
    expect(returnValue).toEqual(finalReturn);
  });
EN

回答 1

Stack Overflow用户

发布于 2022-04-01 15:10:48

new Permit()返回的任何内容都有一个类似这样的类型:

代码语言:javascript
运行
复制
{
  // other properties
  endPermitReason: unknown;
}

它不是可选的,因此不能删除。您可以通过在类型/接口声明中添加?使其成为可选的。

就像这样:

代码语言:javascript
运行
复制
{
  // other properties
  endPermitReason?: unknown;
}

如果没有定义这些类型,那么就必须将finalReturn断言为Partial<ReturnType<new Permit()>> (重复检查语法)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71708967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档