我正在使用TypeScript开发Web项目。在这里,我需要像 C#HashTable 这样的打字稿中的 HashTable 功能。但是我已经在 JavaScript 中开发了它。
this.length = 0;
this.items = [];
this.add = function (key, value) {
this.previous = undefined;
if (this.containsKey(key)) {
this.previous = this.items[key];
} else {
this.length++;
}
this.items[key] = value;
return this.previous;
};
this.clear = function () {
this.items = {};
this.length = 0;
};
this.contains = function (key) {
return this.items.hasOwnProperty(key);
};
this.containsKey = function (key) {
return this.items.hasOwnProperty(key);
};
this.containsValue = function (key) {
return (this.items.hasOwnProperty(key) && this.items[key] != undefined) ? true : false;
};
this.getItem = function (key) {
if (this.containsKey(key))
{
return this.items[key]
}
else
{
return undefined;
}
};
this.keys = function () {
var keys = [];
for (var k in this.items) {
if (this.containsKey(k)) {
keys.push(k);
}
}
return keys;
};
this.remove = function (key) {
if (this.containsKey(key)) {
this.previous = this.items[key];
this.length--;
delete this.items[key];
return this.previous;
} else {
return undefined;
}
};
this.values = function () {
var values = [];
for (var k in this.items) {
if (this.containsKey(k)) {
values.push(this.items[k]);
}
}
return values;
};
this.each = function (fn) {
for (var k in this.items) {
if (this.containsKey(k)) {
fn(k, this.items[k]);
}
}
};
var previous = undefined;
}
return HashTable;
像这样,Typescript具有预定义的代码吗?还是我需要将这些代码从JS重写为TS?在打字稿中,此 HashTable 是否有任何简单的属性或类?
或TS中的任何其他属性可以执行相同的 HashTable 功能?
答案 0 :(得分:0)
现代JavaScript具有三个选项:
Map
,据我所知最接近HashTable。它的主要优点是其键的类型可能为Object
。Set
,它基本上是一个唯一的数组。Object
也称为{}
。键值存储。我建议使用对象,但是如果您的键需要是对象,请使用Map
。
答案 1 :(得分:0)
Map 可能是上面建议的正确答案,但也许带有类型的 hashmap 看起来像这样可以工作:
{ [key: string]: Type; }
or
{ [key: number]: Type; }