【发布时间】:2019-06-30 02:26:50
【问题描述】:
我正在使用 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 功能?
【问题讨论】:
-
在我看来,这似乎是一种过度杀戮。 JS 对象 {} 也可以像哈希一样工作。它包含所有已定义的等效函数
-
你想把这段代码转换成打字稿吗?
标签: javascript typescript hashtable typescript2.0