日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用于TypeScript枚舉的實用輔助函數(shù)

在 TypeScript 中使用枚舉類型時,下面這些輔助函數(shù)可能會很有用,趕緊來看一下吧!

創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。

輔助函數(shù)將以下面的枚舉為例進行測試:

enum DayOfWeek {
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6,
Sunday = 7,
}
type Enum = { [s: number]: string };

一 檢查枚舉是否包含某個key

該方法可以用來檢查一個枚舉中是否包含某個key,代碼如下:

function isEnumKey(enumSrc: T, key: unknown) : key is keyof T {
return Number.isInteger(enumSrc[key as keyof T]);
}

測試:

console.log(isEnumKey(DayOfWeek, DayOfWeek[DayOfWeek.Friday])); // true
console.log(isEnumKey(DayOfWeek, DayOfWeek[DayOfWeek.Monday])); // true
console.log(isEnumKey(DayOfWeek, "hello" )); // false

二 檢查枚舉是否包含某個value

該方法可以用來檢查一個枚舉中是否包含某個枚舉值,代碼如下:

function isEnumValue(enumSrc: T, value: unknown): value is T[keyof T] {
return Number.isInteger(enumSrc[enumSrc[value as keyof T] as any as keyof T]);
}

測試:

console.log(isEnumValue(DayOfWeek, DayOfWeek.Friday)); // true
console.log(isEnumValue(DayOfWeek, DayOfWeek.Monday)); // true
console.log(isEnumValue(DayOfWeek, 996)); // false

三 將枚舉轉(zhuǎn)化為key列表

該方法可以用來將枚舉轉(zhuǎn)化為key列表,也就是將所有的枚舉key存放在一個數(shù)組中,代碼如下:

function enumToKeys(enumSrc: T): (keyof T)[] {
return Object.keys(enumSrc).filter((key: keyof T | any) => isEnumKey(enumSrc, key)) as (keyof T)[];
}

測試:

console.log(enumToKeys(DayOfWeek));

輸出結(jié)果:

[
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday',
'Sunday'
]

四 將枚舉轉(zhuǎn)化為value列表

該方法可以用來將枚舉中所有的枚舉值提取出來,放在一個數(shù)組中,代碼如下:

function enumToValues(enumSrc: T): T[keyof T][] {
return enumToKeys(enumSrc)
.map((key: keyof T) => enumSrc[key]);
}

測試:

console.log(enumToValues(DayOfWeek));

輸出結(jié)果:

[ 1, 2, 3, 4, 5, 6, 7 ]

五 將枚舉值轉(zhuǎn)化為對應的key

該方法可以通過枚舉值獲取枚舉中對應的key,代碼如下:

function enumValueToKey(enumSrc: T, value: T[keyof T]): keyof T | undefined {
return (enumSrc as any)[value];
}

測試:

console.log(enumValueToKey(DayOfWeek, DayOfWeek.Friday)); // Friday
console.log(enumValueToKey(DayOfWeek, DayOfWeek.Monday)); // Monday
console.log(enumValueToKey(DayOfWeek, 996)); // undefined

六 將枚舉轉(zhuǎn)換為鍵值對數(shù)組

該方法可以用來將枚舉轉(zhuǎn)化為鍵值對數(shù)組,代碼如下:

function enumToEntries(enumSrc: T): [keyof T, T[keyof T]][] {
return enumToValues(enumSrc)
.map((value: T[keyof T]) =>
[enumValueToKey(enumSrc, value) as keyof T, value]);
}

測試:

console.log(enumToEntries(DayOfWeek));

輸出結(jié)果:

[
[ 'Monday', 1 ],
[ 'Tuesday', 2 ],
[ 'Wednesday', 3 ],
[ 'Thursday', 4 ],
[ 'Friday', 5 ],
[ 'Saturday', 6 ],
[ 'Sunday', 7 ]
]

七 將枚舉轉(zhuǎn)換為對象數(shù)組

該方法可以用來將枚舉轉(zhuǎn)化為對象數(shù)組,鍵值可以自定義,代碼如下:

function fromEnum(
enumSrc: T,
projection: (item: [keyof T, T[keyof T]], index: number, array: [keyof T, T[keyof T]][]) => C,
skip?: (value: [keyof T, T[keyof T]], index: number, array: [keyof T, T[keyof T]][]) => boolean
) {
let entries = enumToEntries(enumSrc);
if (skip) entries = entries.filter(skip);
return entries.map(projection);
}

測試:

interface Option {
label: keyof T;
value: T[keyof T];
}
const options: Option[] = fromEnum(
DayOfWeek,
([label, value]: [keyof typeof DayOfWeek, DayOfWeek]) => ({
label,
value,
})
);
console.log(options);

輸出結(jié)果:

[
{ label: 'Monday', value: 1 },
{ label: 'Tuesday', value: 2 },
{ label: 'Wednesday', value: 3 },
{ label: 'Thursday', value: 4 },
{ label: 'Friday', value: 5 },
{ label: 'Saturday', value: 6 },
{ label: 'Sunday', value: 7 }
]

分享文章:用于TypeScript枚舉的實用輔助函數(shù)
網(wǎng)頁URL:http://m.5511xx.com/article/dhhhdgi.html