[英]How to declare the TypeScript Type for a Java Map of Map of Sets?
在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'
,這對我來說更陌生。
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])) {
}
}
您可以為每一層創建一種類型,如下所示:
interface Column {
id: number;
}
interface Row {
[key: number]: Array<Column>;
}
class Matrix {
[key: number]: Row;
}
然后你可以像這樣創建一個矩陣:
const myMatrix: Matrix = {
"1":{
"1":[{"id":1},{"id":2}]
},
"2":{
"1":[{"id":2},{"id":3}]
}
};
從 Typescript 代碼中,您可以根據需要使用關聯數組表示法訪問 Matrix:
const arr = myMatrix[1][1];
console.log(JSON.stringify(arr));
這打印:
[{"id":1},{"id":2}]
我們可以在 Typescript 中聲明 Maps,因此您可以嘗試使用如下所示的內容,然后使用 foreach 對其進行迭代。
var dataMap = new Map<number, Map<number,Array<Obj>>>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.