9.23答案
来源:10-22 【高级类型Pick+Record】 高级类型联合使用+作业

慕粉3227390
2021-09-12
interface Todo{
title: string
completed: boolean
description: string
}
let todoList: Todo[] = [
{
title: ‘开发权限管理模块’,
completed: true,
description: ‘使用vue3来开发’
},
{
title: ‘年会’,
completed: false,
description: ‘12月29号上午’
},
]
type Record = {
[P in keyof any]: T
}
type pickType2 = Pick<Todo, “title”|“completed”>
let todoList2:pickType2[] = todoList.map(({title,completed})=>({title,completed}))
2回答
-
keviny79
2021-09-14
要写成扁平化格式,你上方还是数组
答案:
function convertSubTodoItemList(subTodoItemList: Record<Pick<Todo, "title" | "completed">> = {}) {
todoList.forEach(({ title, completed }) => {
subTodoItemList[title] = { title, completed }
})
return subTodoItemList
}
console.log(convertSubTodoItemList())
10 -
keviny79
2021-09-23
现在给出最终答案
// 9-23 的 最终的两个 答案
// 答案1: 见 S100 处修改
function convertSubTodoItemList() {
// reduce 第二个参数是 Todo 类型,所以可以解构成{ title, completed }
return todoList.reduce((prev, { title, completed }) => { //S100 不能写成 item
return {
...prev,
[title]: { title, completed }
};
}, {} as Record<Pick<Todo, 'title' | 'completed'>>);
}
// 答案2:
let subTodoItemList: Record<Pick<Todo, "title" | "completed">> =
{ "title": { "title": "df", completed: false } }
function convertSubTodoItemList(subTodoItemList: Record<Pick<Todo, "title" | "completed">> = {}) {
todoList.forEach(({ title, completed }) => {
subTodoItemList[title] = { title, completed }
})
return subTodoItemList
}
console.log(convertSubTodoItemList())
00
相似问题