首页 > 解决方案 > 如何为 Set Map of Sets 的 Java Map 声明 TypeScript 类型?

问题描述

在Java中我有这样的东西:

public class MyMatrix implements Map<Long, Map<Long, Set<MyObject>>> {...}

我想做的是在 TypeScript 中声明这个 Map 的对应类型。

对应的 JSON 是:

{
   "1":{
      "1":[{"id":1},{"id":2}]
   },
   "2":{
      "1":[{"id":2},{"id":3}]
   }
}

我希望能够使用关联数组表示法来访问它,例如myArray[1][1] should return [{"id":1},{"id":2}]

我试过用这样的东西

var myMatrix: Array<Array<Array<MyObjec>>>;

但没有运气。

尝试以下代码时:

for (const x in Object.keys(this.myMatrix)) {
  for (const y in Object.keys(this.myMatrix[x])) {
  }
}

我在第二个 for 循环中收到以下错误:

ERROR TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)

希望我发现了一点提示:这个错误的原因似乎是在第一个循环Object.keys中是从而'0'不是开始的'1',这对我来说甚至更陌生。

标签: javaarraysjsontypescriptdictionary

解决方案


HugoTeixeira 的类型对我来说很合适。这段代码:

for (const x in Object.keys(this.myMatrix)) {
  for (const y in Object.keys(this.myMatrix[x])) {
  }
}

应该:

for (const x of Object.keys(this.myMatrix)) {
//           ^^
  for (const y of Object.keys(this.myMatrix[x])) {
  }
}

推荐阅读