目录
写在前面
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