为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第1天 TypeScript学习 9-24章

标签:
征文 活动

课程名称: 晋级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"
  }
]

解答思路

  1. 使用 ts的高级类型 Pick 来抓取title 和 completed
  2. 抓取出的属性使用Record再映射到另一个类型上然后创造一个新的类型
  3. 创建空对象,类型为新创造出的类型

    这里的空对象类型是“可索引的类型” 在对象中并不强制一定要有值

  4. 循环原始数据,并抽离出需要的数据

    这里往对象中添加的值必须是对象并且对象中必须是 title 和 completed 两个属性,否则会报错

  5. 打印
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 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消