此博客是本人从学生时代开始做笔记所用, 部分是工作所遇问题,做填坑笔记,部分闲来查阅资料,加上自己的理解所总结的学习笔记, 常忙得不可开交,若漏了资料来源,望通知~ 前路漫漫,写点东西告诉自己正在一点点进步,而不要迷失于繁忙。

映射属性,Required、Partial与Pick

有时候需要一个类型,它依赖于上一个类型,但对属性的要求却不同,简而言之:从旧类型中创建新类型

这里需借助 映射属性 (不能用于interface,只能用于type!)

 

全转为readonly

type Readonly<T> = {
    readonly [P in keyof T]: T[P];
}
type ReadonlyPerson = Readonly<Person>

备注:Person可为interface或type

 

全转为Partial

复制代码

interface Person {
  name: string;
  age: number;
}

type Partical<T>= {
  [P in keyof T]?: T[P];
}

type ParticalPerson= Partical<Person>

interface ParticalInterfacePerson extends ParticalPerson {} //借助type转换interface

复制代码

 

转换为Pick (筛选一部分属性)注意in

复制代码
interface Person {
    name: string;
    age: number;
}

type Pick1<T, K extends keyof T>= {
    [P in K]?: T[P];
}

type PickPerson= Pick1<Person, 'name'>
复制代码

 

备注:Pick、Required、Partial现已内置于typescript

posted @   炎泽  阅读(553)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
历史上的今天:
2017-01-31 简要总结ajax工作原理及优缺点
2017-01-31 js 正则表达式
点击右上角即可分享
微信分享提示