入坑typescript, 手撸了一个enum的实现, 挺舒服的
发布于 8 天前 作者 xiaozhongliu 924 次浏览 最后一次编辑是 7 天前 来自 分享

遭了, 这是心动的感觉

image.png

image.png

给不使用typescript的同学附上一个es6实现, 对外使用起来感受是一样的, 并且会有vscode智能提示

class Enum {
    constructor(map) {
        this.map = new Map(map)
    }

    getNames() {
        return Object.keys(this).filter(key => key !== 'map')
    }

    getTexts() {
        return Array.from(this.map.values())
    }

    getTextByName(name) {
        return this.map.get(this[name])
    }

    getTextByValue(value) {
        return this.map.get(value)
    }
}

module.exports = {

    Gender: new class extends Enum {
        constructor() {
            super([
                [0, '未知'],
                [1, '男性'],
                [2, '女性'],
            ])
            this.Unknow = 0
            this.Male = 1
            this.Female = 2
        }
    }()
}
9 回复

楼主typescrip怎么学的,我看了一下文档,觉得头大

你弄得跟Java的注解一样,IDE不支持吧,这样在选枚举的时候,就没有代码提示了呀。 还是用jsdoc注释格式吧,还能在用的时候显示注释

@renzhao1113 因为楼主以前用静态语言的, 所以轻车熟路啊, 函数式编程+静态类型, 不要太爽

@cloudZQY 这个…又不是为了代码提示

想问问楼主这是什么插件,文件夹icon那个

@im-here 插件排行榜首页就有吧🤨你找找

看官方文档原生enum类型还未支持decorator,如有哪位同学有手段请开始表演

这一看就是java跳槽过来玩node的

@zengming00 这更像C#风格enum🤨java的enum刚开始接触的时候还有些不习惯

回到顶部