Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值?_Javascript_Typescript - Fatal编程技术网

如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值?

如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值?,javascript,typescript,Javascript,Typescript,如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值? 作为一个助手,可以有一个具有按位键的文字类型映射:1、2、4、8、。。。 我不知道如何将结果/返回值放在一起,以便它返回与给定类型兼容的结果 备选案文1: const result: "Aaa" | "Bbb" | "Ccc" | "Ddd" = selectByBitwiseSum1(5); // THE EXPEC

如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值? 作为一个助手,可以有一个具有按位键的文字类型映射:1、2、4、8、。。。 我不知道如何将结果/返回值放在一起,以便它返回与给定类型兼容的结果

备选案文1:

  const result: "Aaa" | "Bbb" | "Ccc" | "Ddd" = selectByBitwiseSum1(5);

  // THE EXPECTED RESULT:
  result = "Aaa" | "Ccc";


  export function selectByBitwiseSum1(bitwiseSum: number): "Aaa" | "Bbb" | "Ccc" | "Ddd" {

    var result;

    var optMap = [ {key: 1, val: "Aaa"},
                   {key: 2, val: "Bbb"},
                   {key: 4, val: "Ccc"},
                   {key: 8, val: "Ddd"}  ];

    // THE DESIRED CONVERSION PLEASE  TO RETURN GIVEN TYPE (NOT STRING ARRAY)
    result = ???

                  // THE EXPECTED RESULT:
    //result = "Aaa" | "Ccc";

    return result;
    
  }
变量2-阵列类型:

  const result: ("Aaa" | "Bbb" | "Ccc" | "Ddd")[] = selectByBitwiseSum2(5);

  result = ("Aaa" | "Ccc")[];


  export function selectByBitwiseSum2(bitwiseSum: number): ("Aaa" | "Bbb" | "Ccc" | "Ddd")[] {

    var result;

    var optMap = [ {key: 1, val: "Aaa"},
                   {key: 2, val: "Bbb"},
                   {key: 4, val: "Ccc"},
                   {key: 8, val: "Ddd"}  ];


    // THE DESIRED CONVERSION PLEASE  TO RETURN GIVEN TYPE (NOT STRING ARRAY)
    result = ???
                  // THE EXPECTED RESULT:
    //result = ("Aaa" | "Ccc")[];

    return result;
    
  }

你可以用这一个班轮来完成所有的事情

const arr=“AAA、BBB、CCC、DDD、EEE、FFF”。拆分(“,”;
console.log((5).toString(2).split(“”).reverse()

.reduce((a,c,i)=>(!+c|a.push(arr[i]),a),[]).join(“|”)为什么是按位操作数?当然,请提供一个用法,但这并不能回答OP的问题-OP显然是位移位(位掩码)来查找字符串(为什么,我不知道)。此外,OP的不清楚问题涉及类型脚本和类型,因此不清楚目的是选择字符串还是选择类型。我喜欢按位技巧,但是,我的主要困惑在于返回的“AAA | CCC”类型,而不是我与seam一起工作的JavaScript API想要的字符串数组。嗯,返回字符串可以通过
.join()
在返回数组之前对数组进行加密来轻松创建,请参阅我编辑的文章。