如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值?
如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值? 作为一个助手,可以有一个具有按位键的文字类型映射:1、2、4、8、。。。 我不知道如何将结果/返回值放在一起,以便它返回与给定类型兼容的结果 备选案文1:如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值?,javascript,typescript,Javascript,Typescript,如何根据单个位和从TypeScript/JavaScript字符串文字类型中选择特定值? 作为一个助手,可以有一个具有按位键的文字类型映射:1、2、4、8、。。。 我不知道如何将结果/返回值放在一起,以便它返回与给定类型兼容的结果 备选案文1: const result: "Aaa" | "Bbb" | "Ccc" | "Ddd" = selectByBitwiseSum1(5); // THE EXPEC
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()
在返回数组之前对数组进行加密来轻松创建,请参阅我编辑的文章。