TypeScript中是否有任何已定义的HashTable类,例如C#

时间:2019-02-06 07:22:09

标签: javascript typescript hashtable typescript2.0

我正在使用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 功能?

2 个答案:

答案 0 :(得分:0)

现代JavaScript具有三个选项:

  • Map,据我所知最接近HashTable。它的主要优点是其键的类型可能为Object
  • Set,它基本上是一个唯一的数组。
  • Object也称为{}。键值存储。

我建议使用对象,但是如果您的键需要是对象,请使用Map

答案 1 :(得分:0)

Map 可能是上面建议的正确答案,但也许带有类型的 hashmap 看起来像这样可以工作:

{ [key: string]: Type; }

or

{ [key: number]: Type; }