Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在TypeScript中是否有任何定义的哈希表类,如C#_Javascript_Typescript_Hashtable_Typescript2.0 - Fatal编程技术网

Javascript 在TypeScript中是否有任何定义的哈希表类,如C#

Javascript 在TypeScript中是否有任何定义的哈希表类,如C#,javascript,typescript,hashtable,typescript2.0,Javascript,Typescript,Hashtable,Typescript2.0,我正在使用TypeScript开发web项目。在这里,我需要像C#HashTable这样的typescript中的HashTable功能。但我已经用JavaScript开发了它 像这样,Typescript有预定义的代码吗?或者我需要将这些代码从JS重写到TS?typescript中是否有此哈希表的简单属性或类 或者TS中的任何其他属性来实现相同的哈希表功能?现代JavaScript有三个选项: 映射,最接近我的知识的哈希表。它的主要优点是它的键可能是Object类型 Set,它基本上是一个独

我正在使用TypeScript开发web项目。在这里,我需要像C#HashTable这样的typescript中的HashTable功能。但我已经用JavaScript开发了它

像这样,Typescript有预定义的代码吗?或者我需要将这些代码从JS重写到TS?typescript中是否有此哈希表的简单属性或类


或者TS中的任何其他属性来实现相同的哈希表功能?

现代JavaScript有三个选项:

  • 映射
    ,最接近我的知识的哈希表。它的主要优点是它的键可能是
    Object
    类型
  • Set
    ,它基本上是一个独特的数组
  • 对象
    也称为
    {}
    。键值存储
我建议使用object,但如果您的键需要是object,请使用
贴图



JavaScript
Object
{}
Map
快20倍左右。因此,只有当您需要使用对象作为键时,才使用
Map

在我看来,这似乎是一种过度杀戮。JS对象{}也可以像散列一样工作。它包含所有已定义的等效函数使用
Map
?你想把这段代码转换成typescript吗?可能的副本可以用你建议的map对象把我的JS代码转换成TS吗?@Raja我真的不明白你的问题。。。要将JS转换为TS,只需重命名文件并设置编译。
        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;