Typescript基础工具

56 阅读1分钟
  • Omit
type Result1 = Omit<{ a: number; b: string; c: boolean }, 'b' | 'c'>;
/*
type Result1 = {
    a: number;
}
*/
  • Pick
// 原始类型
interface TState {
  name: string;
  age: number;
  like: string[];
}
// 如果我只想要name和age怎么办,最粗暴的就是直接再定义一个(我之前就是这么搞得)
interface TSingleState {
  name: string;
  age: number;
}
// 这样的弊端是什么?就是在Tstate发生改变的时候,TSingleState并不会跟着一起改变,所以应该这么写
interface TSingleState extends Pick<TState, 'name' | 'age'> {}
  • Exclude
type Result = Exclude<'1' | '2', '2' | '3'>;
// type Result = "1"

type Result2 = Exclude<string, '1'>;
// type Result2 = string

type Result3 = Exclude<{ a: string | number }, { a: number }>;
/*
type Result3 = {
    a: string | number;
}
*/
  • Extract
type Result1 = Extract<'1' | '2', '2' | '3'>;
// type Result1 = "2"

type Result2 = Extract<string, '1'>;
// type Result2 = never

type Result3 = Extract<{ a: number }, { a: string | number }>;
/*
type Result3 = {
    a: number;
}
*/
type Result4 = Extract<string | number, number | boolean>;
// type Result4 = number
  • NonNullable
/**
 * Exclude null and undefined from T
 */
type NonNullable<T> = T extends null | undefined ? never : T;