关于TS的问题

各位大佬好,想问下TS中如何声明一个对象储存服务器给的数据。
js 例子如下
服务器数据 tasks:{
1001:{XXX},
1002:{XXX},
1003:{XXX}
}
var data = tasks;
访问 data.1001

在TS中。我已经构建了一个task的数据结构
class Task{
id:number = xxx,
aa:string = xxx,
bb:boolean = xxx
}

接下来不知道用什么来存下来,才能比较方便的用key value的形式访问
let data:Array = tasks;????因为他不是数组,我只是表达下我的意思。
访问 data.1001

希望有大佬不吝赐教,谢谢!

你们服务器返回的真是奇怪的结构,如果是强类型语言怎么搞,设计应该是

tasks:[
{
type:1001,
content:{xxx}
},
{
type:1002,
content:{xxx}
}
{
type:1003,
content:{xxx}
}
]

如果你硬要这样也是可以的 let data :{[key:number]:{xxx}}=tasks;

因为这么设计是为了方便的动态推送更新数据。通过key我这边找到直接替换就好了。如果是数组结构的话我这边还需要for循环一层找到对应的id在替换

你应该
let key = ‘1001’
let data: Task = tasks[key];

你这样只是存了其中的一条数据。我是需要把整个数据存在data上,然后通过data.xxx访问

   type Task = {
        id: number
    }
    let tasks: { [key: string]: Task } = {
        ["101"]: { id: 123 },
        ["102"]: { id: 234 },
    };

我觉得答案已经很明朗啊,不知道楼主在疑惑什么。
你客户端的数据长这样
tasks = {
1001:{
id:1,
taskStr:帮助阿婆过马路
}
}

远程存的是JSON.stringify(tasks)返回的字符串,你客户端用JSON.parse(tasksStr)的返回值作为客户端使用的tasks的值。
取1001任务的数据直接tasks.1001拿,不过这样会报错,建议tasks[“1001”]拿1001任务的数据。

感谢大佬指点,我要的就是这种效果。不过我已经用map存起来使用了

你这样也是对的,不过就没有ts智能提示的优势了。和js一样了

你给他整个接口不就有了

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。