上节课作业答案打卡

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

前端老师傅

2021-12-25

type Pick<T, K extends keyof T> = {
  // in是类型映射,=for...in 循环迭代所有的K的类型
  [P in K]: T[P]
}

type Record<T> = {
  [p in keyof any]: T
}

interface Todo {
  title: string
  completed: boolean
  description: string
}

let todoList: Todo[] = [
  {
    title: '开发权限管理模块',
    completed: true,
    description: '使用Vue3+typescript来开发'
  },
  {
    title: '年会',
    completed: false,
    description: '12月29号上午开心酒店1楼105'
  }
]

type TodoHasTitleAndCompleted = Pick<Todo, 'title' | 'completed'>

type TodeRecode = Record<TodoHasTitleAndCompleted>

let TodeResult: TodeRecode = {}

todoList.map(({ title, completed }) => {
  TodeResult[title] = {
    title,
    completed
  }
})
console.log(TodeResult, '最后的结果')

这个运行结果应该没错叭,谢谢老师
图片描述

写回答

1回答

keviny79

2021-12-25

正确,可以,这是其中一种解法,可以进一步 稍作封装成一个函数,让封装性更好一些,可以试下。

0
0

晋级TypeScript高手,成为抢手的前端开发人才

轻松驾驭 TypeScript 高级用法, 突破前端成长瓶颈

871 学习 · 425 问题

查看课程