使用 Javascript 从对象中删除键时,“删除”运算符的操作数必须是 optional.ts

Posted

技术标签:

【中文标题】使用 Javascript 从对象中删除键时,“删除”运算符的操作数必须是 optional.ts【英文标题】:The operand of a 'delete' operator must be optional.ts when deleting a key from object with Javascript 【发布时间】:2022-01-23 02:48:53 【问题描述】:

我有一个对象,我在我的 React 应用程序的多个地方使用它:

   export default 
      'One':  Key: Foo.Bar, Color: '#eeeeaa' ,
      'Two':  Key: Foo.Bar, Color: '#aaeeee' ,
      'Three':  Key: Foo.Bar, Color: '#ffaaaa',
    ;

在一个特定的组件中,我需要这个对象,但没有键“三”。

当我尝试时:

import MyObjects from './';

const newObject = delete MyObjects.Three;

我明白了:

“删除”运算符的操作数必须是可选的.ts

如何解决这个问题或有更清洁的方法?

更新:

当我尝试时:

  const myObject2 = MyObjects;
  const  Three, ...testData  = myObject;
  console.log(testData);

然后我得到 Eslint 错误:

'Three' 被赋值但从不 used.eslint@typescript-eslint/no-unused-vars

【问题讨论】:

不要改变另一个模块的导出。该错误使您避免犯错误,这会在其他组件中造成很多麻烦-很好!相反,创建一个不包含该键 Three新对象 - 请参阅 ***.com/questions/208105/… @Bergi 然后我得到'Three' is assigned a value but never used.eslint@typescript-eslint/no-unused-vars。我更新了我的问题。你有什么想法吗? 重新更新:忽略该行中的规则或使用该规则通常允许的const Three: _, ...testData = myObject;。另请参阅 ***.com/q/62839717/1048572 和 ***.com/questions/56151661/… 等等 不确定这是否有帮助.. const newObj = 'one': [MyObjects.One], 'two': [MyObjects.Two] 或 Object.keys(MyObjects).forEach (key => if (key !== 'Three') obj[key] = MyObjects[key]; ) 【参考方案1】:

阅读:

“删除”运算符的操作数必须是可选的。

您需要使用接口以及可选键。您可以创建一个具有特定接口类型的变量,而不是直接导出。

? 用于表示可选属性。它们可以被删除(如您的错误所示)。

export interface Key 
 Key : string,
Color : string


export interface Colors 
     One : Key,
     Two : Key,
Three? : Key

const defaultColors : Colors = 
      'One':  Key: Foo.Bar, Color: '#eeeeaa' ,
      'Two':  Key: Foo.Bar, Color: '#aaeeee' ,
      'Three':  Key: Foo.Bar, Color: '#ffaaaa',
    ;
export default defaultColors;

另一种方法是创建一个只有两种颜色的界面,然后创建一个扩展第一种颜色的第二个界面(以及添加属性Three)。

【讨论】:

这将破坏 OP 的应用程序

以上是关于使用 Javascript 从对象中删除键时,“删除”运算符的操作数必须是 optional.ts的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 从字符串中删除零宽度空间(unicode 8203)

用regedit删除注册表某键,报错,说不能删除,删除键时出错,怎么回事

用regedit删除注册表某键,报错,说不能删除,删除键时出错,怎么回事

Javascript/jQuery:从画布中删除形状/路径

JavaScript delete关键字

使用JavaScript从数组中删除对象