课程名称: 晋级TypeScript高手,成为抢手的前端开发人才
课程章节: 9-24 【高级类型Pick+Record】 高级类型联合使用+作业
课程讲师: keviny79
课程内容:
本讲主要对Record复习以及作业的布置
作业:
怎样实现完成这个数组 只允许保留 title 和 completed 这两个属性,模拟异步从服务器中获取到数据。
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"
}
]
解答思路
- 使用 ts的高级类型 Pick 来抓取title 和 completed
- 抓取出的属性使用Record再映射到另一个类型上然后创造一个新的类型
- 创建空对象,类型为新创造出的类型
这里的空对象类型是“可索引的类型” 在对象中并不强制一定要有值
- 循环原始数据,并抽离出需要的数据
这里往对象中添加的值必须是对象并且对象中必须是 title 和 completed 两个属性,否则会报错
- 打印
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"
}
]
// 1.抓取title 和 completed
type PickTodoType = Pick<Todo, "title" | "completed">;
// 2.抓取出的属性再映射到另一个类型上然后创造一个新的类型
type newRecordType = Record<string, PickTodoType>;
// 3.创建空对象,抽离出需要的属性
let newObj: newRecordType = {};
// 4.循环原始数据,并抽离出需要的数据
todoList.forEach(({ title, completed }) => {
newObj[title] = {
title,
completed,
};
});
//5.打印
console.log("newObj=>", newObj);
课程收获:
本节加深对 TypeScript高级类型 Pick 和 Record 的使用方式。
通过作业对 Pick 和 Record 的使用场景有了一定的了解,为之后的学习打下了一定的基础,期待后面的学习
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦