Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在typescript中反转枚举_Javascript_Typescript - Fatal编程技术网

Javascript 在typescript中反转枚举

Javascript 在typescript中反转枚举,javascript,typescript,Javascript,Typescript,我有下一个代码: enum MyEnum{ 颜色='AreColors', Cars='AreCars', } const menuTitle=((对象:MyEnum)=>{ const newObj={}; Object.keys(obj.forEach)(x)=>{ newObj[obj[x]]=x; }); 返回newObj; });您的代码有几个问题: 如果要通过传入MyEnum作为对象来反转枚举的键值对,则需要使用obj:typeof MyEnum。这是假设您希望使用menuTitl

我有下一个代码:

enum MyEnum{
颜色='AreColors',
Cars='AreCars',
}
const menuTitle=((对象:MyEnum)=>{
const newObj={};
Object.keys(obj.forEach)(x)=>{
newObj[obj[x]]=x;
});
返回newObj;

});您的代码有几个问题:

  • 如果要通过传入
    MyEnum
    作为对象来反转枚举的键值对,则需要使用
    obj:typeof MyEnum
    。这是假设您希望使用
    menuTitle(MyEnum)
    执行反转
  • Object.keys(obj)
    将返回字符串数组,这会导致枚举出现索引问题。如果您将它强制转换为MyEnum类型的
    keyof数组,那么它将工作
  • 改进代码:

    enum MyEnum {
      Colors = 'AreColors',
      Cars = 'AreCars',
    }
    
    const menuTitle = ((obj: typeof MyEnum) => {
      const newObj: { [key in MyEnum]?: keyof typeof MyEnum } = {};
      (Object.keys(obj) as Array<keyof typeof MyEnum>).forEach((x) => {
        newObj[obj[x]] = x;
      });
      return newObj;
    });
    
    console.log(menuTitle(MyEnum));
    
    enum MyEnum{
    颜色='AreColors',
    Cars='AreCars',
    }
    const menuTitle=((obj:typeof MyEnum)=>{
    const newObj:{[key in MyEnum]?:keyof typeof MyEnum}={};
    (Object.keys(obj)作为数组).forEach((x)=>{
    newObj[obj[x]]=x;
    });
    返回newObj;
    });
    log(menuTitle(MyEnum));
    

    请参阅上的概念验证示例。

    您的代码有几个问题:

  • 如果要通过传入
    MyEnum
    作为对象来反转枚举的键值对,则需要使用
    obj:typeof MyEnum
    。这是假设您希望使用
    menuTitle(MyEnum)
    执行反转
  • Object.keys(obj)
    将返回字符串数组,这会导致枚举出现索引问题。如果您将它强制转换为MyEnum类型的
    keyof数组,那么它将工作
  • 改进代码:

    enum MyEnum {
      Colors = 'AreColors',
      Cars = 'AreCars',
    }
    
    const menuTitle = ((obj: typeof MyEnum) => {
      const newObj: { [key in MyEnum]?: keyof typeof MyEnum } = {};
      (Object.keys(obj) as Array<keyof typeof MyEnum>).forEach((x) => {
        newObj[obj[x]] = x;
      });
      return newObj;
    });
    
    console.log(menuTitle(MyEnum));
    
    enum MyEnum{
    颜色='AreColors',
    Cars='AreCars',
    }
    const menuTitle=((obj:typeof MyEnum)=>{
    const newObj:{[key in MyEnum]?:keyof typeof MyEnum}={};
    (Object.keys(obj)作为数组).forEach((x)=>{
    newObj[obj[x]]=x;
    });
    返回newObj;
    });
    log(menuTitle(MyEnum));
    
    请参见上的概念验证示例