全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2025-10-03_如何在TypeScript里使用类封装枚举来实现Java的枚举形参倒置

您的位置:首页 >> 新闻 >> 行业资讯

如何在TypeScript里使用类封装枚举来实现Java的枚举形参倒置 一、前言首先,「枚举形参倒置」的意思是通过为枚举形参添加一些方法,来减少调用时候传入的形参个数。 「??举个栗子」 longtimestamp = System.currentTimeMillis(); // before DateTimeUtil.format(timestamp, DateTimeFormatter.FULL_DATE); // after DateTimeFormatter.FULL_DATE.format(timestamp); 如上示例代码,我们可以在调用时候减少传入一个枚举形参的传入,写出来的代码会更加简洁好看。 ?还有其他好处吗? 好像没有了... ?当然,我们不讨论这两种写法的好处和坏处「(评论区可以讨论)」,我们只聊实现。 二、Java 的实现众所周知,在「Java」中,枚举本身也是类的特殊封装,而枚举项可以认为是「Java」类的静态实例常量,所以,我们很轻易的就能实现: 2.1 封装枚举类@Getter @AllArgsConstructor publicenumDateTimeFormatter { /** * 年月日 */ FULL_DATE("yyyy-MM-dd"), /** * 时分秒 */ FULL_TIME("HH:mm:ss"), /** * 年月日时分秒 */ FULL_DATETIME("yyyy-MM-dd HH:mm:ss"), privatefinalString value; } 如上,我们声明这个枚举类之后,就可以为这个枚举添加一些我们需要的方法了: 2.2 添加方法@Getter @AllArgsConstructor publicenumDateTimeFormatter { // 省略定义的枚举项目 // 枚举项封装的值 privatefinalString value; /** * 使用这个模板格式化毫秒时间戳 * *@parammilliSecond 毫秒时间戳 *@return格式化后的字符串 */ publicfinal@NotNullStringformat(longmilliSecond){ returnDateTimeUtil.format(milliSecond,this); } /** * 使用这个模板格式化当前时间 * *@return格式化后的字符串 */ publicfinal@NotNullStringformatCurrent(){ returnformat(System.currentTimeMillis()); } } 2.3 调用示例所以封装完毕之后,我们就可以用这两个方法来实现本文提到的「枚举形参倒置」了: 三、TypeScript 的实现可是在「TypeScript」中,「枚举」并没有像「Java」那样,有「枚举封装」的特性,所以,我们只能通过「类」来实现这个功能了。可以参考我们这篇文章:TypeScript使用枚举封装和装饰器优雅的定义字典。今天我们就不赘述之前的设计了,可以先阅读之后继续下面的内容。 3.1 封装枚举类exportclassDateTimeFormatterextendsAirEnum { staticreadonly FULL_DATETIME =newDateTimeFormatter( 'yyyy-MM-dd HH:mm:ss','年-月-日 时:分:秒' ) staticreadonly FULL_DATE =newDateTimeFormatter( 'yyyy-MM-dd','年-月-日' ) staticreadonly FULL_TIME =newDateTimeFormatter( 'HH:mm:ss','时-分-秒' ) } 我们的枚举就声明好了,当然这里的「例子??」其实是多余的,因为「DateTimeFormatter」这种几乎好像大概应该也许是没有什么符合字典业务场景的。 ?当然,为了举例,你就假设它有。 ?3.2 添加方法接下来,我们也同样实现这两个方法: exportclassDateTimeFormatterextendsAirEnumstring { // 一些静态枚举项目 /** * 格式化毫秒时间戳 * @param timestamp 毫秒时间戳 */ format(timestamp:number) { returnAirDateTime.formatFromMilliSecond(timestamp) } /** * 格式化当前时间 */ formatCurrent() { returnthis.format(Date.now().valueOf()) } } 如上,我们实现了和「Java」一样的方法,然后就可以在调用的时候使用这个方法了: 3.3 调用示例四、总结本文通过类的封装,来实现了枚举功能以及「枚举形参倒置」的功能。 AI编程资讯AI Coding专区指南: https://aicoding.juejin.cn/aicoding 点击"阅读原文"了解详情~ 阅读原文

上一篇:2021-05-26_【户外广告观察】传统户外广告微涨3.8%,电梯广告花费增幅达两位数 下一篇:2023-07-15_阿里健康出盲文体、中国银联做玉石印章...「项目精榜」来了

TAG标签:

17
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价