【Web系列二十三】Ts下实现字典

目录

写在前面

代码实现

具体使用


写在前面

        ts下没有原生的字典类,这里手动实现一个类型安全的字典。

代码实现

        直接上代码

class Dictionary<T> {
    private items: { [ key: string | number ]: T } = {}

    constructor (items: { [ key: string | number ]: T }) {
        this.items = items
    }

    public has (key: string | number): boolean {
        return key in this.items
    }

    public set (key: string | number, value: T) {
        this.items[key] = value
    }

    public get (key: string | number): T | undefined {
        return this.has(key) ? this.items[key] : undefined
    }

    public remove (key: string | number): boolean {
        if (this.has(key)) {
            delete this.items[key]
            return true
        }
        return false
    }

    public clear (): void {
        this.items = {}
    }

    public size (): number {
        return Object.keys(this.items).length
    }
    
}

export { Dictionary }

具体使用

import { Dictionary } from '@utils/dict'

interface Person {
    name: string,
    age: number
}

let person_dict: Dictionary<Person> = { name: '', age: -1 }

person_dict.set( 'one': { name: 'Tom', age: 10 })
person_dict.set( 'two': { name: 'Peter', age: 20 })

console.log(person_dict.size())
console.log(person_dict.has('one'))
console.log(person_dict.get('two'))
console.log(person_dict.remove('two'))
console.log(person_dict.size())
console.log(person_dict.clear())
console.log(person_dict.size())

-----------------------------
2
true
{ name: 'Peter', age: 20 }
1
0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值