Collections 是否有打字脚本列表<&燃气轮机;和/或地图<&燃气轮机;班级/图书馆?

Collections 是否有打字脚本列表<&燃气轮机;和/或地图<&燃气轮机;班级/图书馆?,collections,typescript,Collections,Typescript,他们是否向typepad 1.0添加了运行时列表和/或映射类型类?如果没有,是否有一个可靠的库提供了这个功能 对于列表,是否存在链表,其中列表中的元素具有next/prev属性?我们需要一个列表,其中从元素对象(即不是从迭代器)可以获得列表中的下一个和上一个元素(如果是第一个/最后一个,则为null) 他们是否向typepad 1.0添加了运行时列表和/或映射类型类 不,提供运行时不是TypeScript团队的重点 有没有一个可靠的库可以提供这个功能 我写道(实际上只是将桶移植到typescri

他们是否向typepad 1.0添加了运行时列表和/或映射类型类?如果没有,是否有一个可靠的库提供了这个功能

对于列表,是否存在链表,其中列表中的元素具有next/prev属性?我们需要一个列表,其中从元素对象(即不是从迭代器)可以获得列表中的下一个和上一个元素(如果是第一个/最后一个,则为null)

他们是否向typepad 1.0添加了运行时列表和/或映射类型类

不,提供运行时不是TypeScript团队的重点

有没有一个可靠的库可以提供这个功能

我写道(实际上只是将桶移植到typescript):

更新
JavaScript/TypeScript现在以本机方式支持此功能,您可以使用
lib.d.ts
启用它们:如果您想要的话,还可以使用polyfill来编写它,这样您就很容易自己编写了,这样您就可以更好地控制事情了。。 正如其他答案所说,TypeScript的目的不是添加运行时类型或功能

地图:


Typescript只是JavaScript的一个扩展,编译成JavaScript,它向JavaScript添加了数据类型和一些“即将到来”的特性。它根本没有运行时,我相信Angular做到了您想要的:看看这是一组库,使用JavaAPI用TypeScript/JavaScript编写程序。虽然这是一个新项目,但它非常有趣。我刚刚意识到,如果从列表中插入/删除项目,您的最终程序将无法工作,因为该元素的索引值将不同。当然,正如我所写的,这是一个简单的代码,可以帮助您开始,您需要实现这种功能,就像使用iteratorno-remove方法一样?@baraber嗯,正如我写的,这只是一个如何自己实现的示例。添加remove方法非常简单。我可以编辑并添加一个,你指的是哪个类?@iamstapper我创建的
Map
类使用js对象作为底层数据结构,js对象中的所有键都是字符串,这就是为什么我的类对值只有一个通用约束。es6
Map
对象确实支持键的其他类型,这就是为什么它在定义文件中有两个通用约束。关于使用此项的一个注意事项-如果使用requireJS,您还需要在使用它之前显式加载该文件。您好。仅供参考,您的集合(我喜欢)不能用于向web workers传递或从web workers传递的对象。LinkedList将删除它包含的所有对象。字典会抛出一个异常,称为不可序列化。它们有时不会通过。非常奇怪的是,这个列表在某些情况下是填充的,在另一些情况下是空的。我在想原因。你好。好的,Dictionary.toStr就是问题所在。如果在postMessage调用之前在调试器中将其设置为null或undefined,则一切正常。但是如果这是默认函数-不能发布。什么是bucket?
class Map<T> {
    private items: { [key: string]: T };

    constructor() {
        this.items = {};
    }

    add(key: string, value: T): void {
        this.items[key] = value;
    }

    has(key: string): boolean {
        return key in this.items;
    }

    get(key: string): T {
        return this.items[key];
    }
}
class List<T> {
    private items: Array<T>;

    constructor() {
        this.items = [];
    }

    size(): number {
        return this.items.length;
    }

    add(value: T): void {
        this.items.push(value);
    }

    get(index: number): T {
        return this.items[index];
    }
}
class ListItem<T> {
    private list: List<T>;
    private index: number;

    public value: T;

    constructor(list: List<T>, value: T, index: number) {
        this.list = list;
        this.index = index;
        this.value = value;
    }

    prev(): ListItem<T> {
        return this.list.get(this.index - 1);
    }

    next(): ListItem<T> {
        return this.list.get(this.index + 1);   
    }
}

class List<T> {
    private items: Array<ListItem<T>>;

    constructor() {
        this.items = [];
    }

    size(): number {
        return this.items.length;
    }

    add(value: T): void {
        this.items.push(new ListItem<T>(this, value, this.size()));
    }

    get(index: number): ListItem<T> {
        return this.items[index];
    }
}
let map = new Map();
map.set("key1", "value1");
console.log(map.get("key1")); // value1