TS常用工具类型

本文介绍了TypeScript中的四个高级类型操作:Pick用于选择对象的特定属性,Omit则删除指定属性,Exclude创建不包含某些联合类型的差集,Extract提取共同属性,而Partial使部分类型属性可选。这些功能有助于精细化类型控制和代码组织。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Pick

语法:Pick<Type, Keys>

- 通过从 Type 中选取一组属性 Keys(字符串字面或字符串字面的并集)来构造一个类型。

- 就是在已经定义好的Type中选取一些key,组成一个新的Type类型

pick两个类型变量:

       1.表示选择谁的属性

    2.表示选择哪几个属性(传入属性名,只能是第一个 类型变量中存在的属性)

interface Props{
    id:string
    title:string
    children:number[]
}
type PickProps= Pick<Props,'id'|'title'>

生成的新类型,只有id,title两个属性类型 相当于

interface PickProps{
    id:string
    title:string
}

2. Omit

语法:Omit<Type, Keys>

- 通过从 Type 中选择所有属性然后删除 Keys(字符串字面或字符串字面的并集)来构造一个类型。与Pick相反。

- 在已经定义的对象中删除一些,留下剩下的组成新的类型

Omit两个类型变量:

       1.表示选择谁的属性

    2.表示排除哪几个属性(传入属性名,只能是第一个 类型变量中存在的属性)

interface Props{
    id:string
    title:string
    children:number[]
}
type PickProps= Pick<Props,'id'|'title'>

 生成的新类型,除了id,title两个属性类型都有,相当于

interface PickProps{
    children:number[]
}

3. Exclude(排除/不包括)

返回没有含有的那个 Exclude<T,U> 从第一个联合类型参数中,将第二个联合类型中出现的联合项全部排除,只留下没有出现过的参数。

差集

type A = "age" | "name";
type B = "like" | "name";
type C = Exclude<A, B>;

相当于
type C ='age'


type A = "age" | "name";
type B = "age" | "name" | "height";
type C = Exclude<A, B>;

相当于
never 



type T2 = Exclude<string | number | (() => void), Function>;
相当于
type T2 = string | number

4.  Extract (提取/包括)

返回含有的那个 Extract<T,U>提取T中所有能够赋值给Union的属性,将这些属性构成一个新的类型

传入两个泛型,如果 T 是 U 的子类型则返回,不是则返回 never

type Extract<T, U> = T extends U ? T : never;
type A = "age" | "name";
type B = "like" | "eat";
type C = Extract<A, B>;
相当于 type C = nerver

type A = "age" | "name";
type B = "like" | "eat" | "name";
type C = Extract<A, B>;
相当于 type C = "name"

5. Partial(设为可选)

就是将某个类型中的属性全部变为可选项?

interface Todo {
  title: string;
  description: string;
}
 
function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
  return { ...todo, ...fieldsToUpdate };
}
 
const todo1 = {
  title: "organize desk",
  description: "clear clutter",
};
 
const todo2 = updateTodo(todo1, {
  description: "throw out trash",
});

暂时先总结这几个,后续再补充~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值