[Typescript] Enum: Numeric Enums and Reverse Mappings

Let's say we have enum defined as such:

复制代码
export enum WeekDayEnum {
  sunday = 0,
  monday,
  tuseday,
  wednesday,
  thursday,
  friday,
  saturday,
}
export type DayOfWeek =
  | "monday"
  | "tuseday"
  | "wednesday"
  | "thursday"
  | "friday"
  | "saturday"
  | "sunday";
复制代码

 

Usage 1: pass number value as lookup for string key

复制代码
export const getToday = (_date?: Date) => {
  const date: Date = _date || new Date();
  const year = date.getFullYear();
  const month = date.getMonth();
  const day = date.getDate();
  return new Date(year, month, day);
};
export const isSameWeekDay = (day: DayOfWeek, _date?: Date) => {
  const today = getToday(_date).getDay();
  return WeekDayEnum[today] === day;
};
复制代码

'today' is a number type, so :

WeekDayEnum[today] // 'monday'

 

 

usage 2: pass string key to lookup number value

const getTodayOpeningTime = (
  timeTable: WeeklyTimeTableVM[]
): WeeklyTimeTableVM => {
  const todayNum = getToday().getDay() as weeksNumber;
  const todayStr = WeekDayEnum[todayNum];
  return timeTable.find((day) => day[0] === todayStr) as WeeklyTimeTableVM;
};

 

posted @   Zhentiw  阅读(153)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-09-29 [RxJS] `add` Inner Subscriptions to Outer Subscribers to `unsubscribe` in RxJS
2018-09-29 [RxJS] Implement RxJS `concatMap` by Waiting for Inner Subscriptions to Complete
2018-09-29 [React] PureComponent in React
2017-09-29 [NPM] Update published npm packages using np
2017-09-29 [NPM] Publish npm packages using npm publish
2017-09-29 [NPM] Test npm packages locally in another project using npm link
2016-09-29 [Angular2 Form] Build Select Dropdowns for Angular 2 Forms
点击右上角即可分享
微信分享提示