【问题标题】:create generic class to hold key value array (dictionary) with typescript使用打字稿创建泛型类以保存键值数组(字典)
【发布时间】:2021-02-07 23:56:03
【问题描述】:

我想添加 Dictionary 类以在我的应用程序中使用。 我创建了一个类,并向其中添加了一个 keyValuePair 数组来保存我的列表

export class KeyValuePair<TKey, TVal>{
key:TKey;
value:TVal;

constructor(key:TKey, val:TVal){
    this.key = key;
    this.value = val;
}

export class Dictionary<TKey, TVal>{
    array: Array<KeyValuePair<TKey, TVal>>
}

let myClassInstance:Dictionary<number, string> = ...;

问题:

  1. 我希望能够使用 forEach 或在循环中作为 let x of myClassInstance 对其进行迭代,我该怎么做? (myClassInstance.forEach(...);)
  2. 我可以在不调用 className.arrayName 的情况下使用类实例来获取我的数组吗?(myClassInstance.find(...);)
  3. 我可以使用类实例作为索引来获取值吗?(myClassInstance[1])
  • 是否有更好的结构?我想听和学习... 谢谢!!!

【问题讨论】:

  • 既然你的键都是数字,它们是有效的对象键,为什么不直接使用一个普通的 javascript 对象呢?您将使用 Record 类型来描述它。
  • @LindaPaiste - 使用记录而不是数组我有什么损失吗?我也不知道什么更有效,因为我将在数组上使用 find,索引更好吗?你有实现演示吗?

标签: angular typescript angular7 typescript-generics


【解决方案1】:

看看Map,它们是字典。

您可以像这样使用它们:Playground

您可以迭代它们的值、键或条目,它们将被输入。您可以使用 get 找到一些东西。您可以将它们转换为数组 [...myMap.values()],注意:它们将按键插入顺序排序。 (您可以使用 entries() 代替,然后根据需要将结果映射为按键排序)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 2021-11-26
    • 2018-05-02
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    相关资源
    最近更新 更多