当前位置: 代码迷 >> 综合 >> TypeScript类型-Partial、Omit
  详细解决方案

TypeScript类型-Partial、Omit

热度:30   发布时间:2024-01-09 00:44:13.0

Partial 类型的定义

/*** Make all properties in T optional*/
type Partial<T> = {
    [P in keyof T]?: T[P];
};
interface IUser {
    name: stringage: numberdepartment: string
}

使用Partial

type optional = Partial<IUser>// optional的结果如下
type optional = {
    name?: string | undefined;age?: number | undefined;department?: string | undefined;
}

Omit<K,T>类型让我们可以从另一个对象类型中剔除某些属性,并创建一个新的对象类型:
K:是对象类型名称,T:是剔除K类型中的属性名称

type  UserProps =  {
    name?:string;age?:number;sex?:string;
}
// 但是我不希望有sex这个属性我就可以这么写
type NewUserProps =  Omit<UserProps,'sex'> 
// 等价于
type  NewUserProps =  {
    name?:string;age?:number;
}

运用场景:
忽略类型中的某个属性值的时候,例如一个自定的InputProps类型,要继承input元素的所有属性和方法,但是InputProps中也有和input元素属性一样的类型,此时,我们想用InputProps类型里的属性,就可以选择Omit类型移除input元素里相同的类型;

import React, {
     ReactElement, InputHTMLAttributes } from 'react'type InputSize = 'lg' | 'sm'
export interface InputProps extends Omit<InputHTMLAttributes<HTMLElement>, 'size'> {
    disabled?: boolean;size?: InputSize;
}
  相关解决方案