入坑typescript, 手撸了一个enum的实现, 挺舒服的
 发布于 7 年前  作者 xiaozhongliu  5826 次预览  最后一次回复是 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 回复
renzhao1113

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

cloudZQY

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

xiaozhongliu

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

xiaozhongliu

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

im-here

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

xiaozhongliu

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

xiaozhongliu

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

zengming00

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

xiaozhongliu

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