他们是否向 typepad 1.0 添加了运行时 List<> 和/或 Map<> 类型类?如果没有,是否有人编写了一个可靠的库来提供此功能?
对于 List<> 来说,是否存在一个链表,其中列表中的元素具有 next/prev 属性?我们需要一个列表,从元素对象(即不是从迭代器)中,我们可以获取列表中的下一个和上一个元素(如果是第一个/最后一个元素,则为 null)。
自己写起来很容易,这样你就可以更好地控制事情。 正如其他答案所说,TypeScript 的目的不是添加运行时类型或功能。
地图:
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];
}
}
我还没有测试(甚至尝试编译)这段代码,但它应该为您提供一个起点..您当然可以更改您想要的内容并添加您需要的功能...
至于列表中的“特殊需求”,我认为没有理由实现链接列表,因为 javascript 数组允许您添加和删除项目。
这是列表的修改版本,用于处理从元素本身获取上一个/下一个:
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];
}
}
您也在查看未经测试的代码..
希望这有帮助。
Javascript 有一个本机 Map 对象,因此无需创建自己的:
let map = new Map();
map.set("key1", "value1");
console.log(map.get("key1")); // value1
他们是否向打字板 1.0 添加了运行时 List<> 和/或 Map<> 类型类
不,提供运行时不是 TypeScript 团队的重点。
有人编写了一个可靠的库来提供此功能吗?
我写道(实际上只是通过存储桶移植到打字稿):https://github.com/basarat/typescript-collections
JavaScript / TypeScript 现在原生支持此功能,您可以使用
lib.d.ts
来启用它们: https://basarat.gitbook.io/typescript/type-system/lib.d.ts 如果需要的话还可以使用 polyfill 🌹