Skip to content

内置工具类型

Record

  • 描述一个对象键和值的类型
  • 第一个泛型作为 key 的类型
  • 第二个泛型作为 value 的类型
  • 键值对的数量不作限制
ts
type _obj = Record<string, any>; //JS中的object
type _arr = Record<number, any>; //JS中的array

Partial

  • 让传入的类型的所有(浅层)属性变成可选属性
ts
interface _obj {
  name: string;
  age: number;
}
type _obj_Partial = Partial<_obj>;
// returns type { name?: string; age?: number };

Required

  • 与 Partial 相反

Readonly

  • 仅读
ts
interface _obj {
    name:string
    age:number
}
const obj:_obj = {
    name:"张三"
    age:18
}
obj.age = 19//允许
type _obj_Readonly = Readonly<_obj>
const obj02:_obj_Readonly = {
    name:"张三"
    age:18
}
obj02.age = 19//飘红

Pick

  • 除了选中的 key 都不要
ts
interface _obj {
  name: string;
  age: number;
}
type _obj_Pick = Pick<_obj, "name">;
// returns type { name: string }

Omit

  • 与 Pick 相反,省略掉选中的 key
ts
interface _obj {
  name: string;
  age: number;
  sex: string;
  address: string;
}
type _omit = "sex" | "address";
type _res = Omit<_obj, _omit>;
// returns type { name: string; age: number }

Parameters

  • 返回所传入的函数的 arguments 的类型
ts
function fun(param: string) {}
const param: Parameters<typeof fun>[0] = "";

WARNING

返回的类型是一个 tuple

ConstructorParameters

  • 返回所传入的类的构造函数的 arguments 的类型
ts
class Fun {
  constructor(private readonly name: string) {}
}
const param: ConstructorParameters<typeof Fun>[0] = "";

ReturnType

  • 返回所传入的函数的返回值的类型
ts
const func = (params: unknown) => {
  return Number(params);
};
type _res = ReturnType<typeof func>;
// returns type number;

InstanceType

  • 返回传入的构造函数的实例的类型
ts
class Person {
  constructor(public name: string, public age: number) {}
}
type _res = InstanceType<Person>;
// returns type { name: string; age: number };

Uppercase & Lowercase

  • 用于字符串形式的键名的大小写转换
ts
type _sex = "man" | "women";
type _sex_up = Uppercase<_sex>;
// returns type "MAN" | "WOMEN";
type _sex_low = Lowercase<_sex_up>;
// returns type "man" | "women";

Exclude

  • 仅适用于联合类型
  • 求补
  • 从 F 中清除存在于 S 中的类型,并将剩余的返回
ts
type _f = string | number | boolean;
type _s = string | null | undefined;
type _res = Exclude<_f, _s>;
//结果如下
type _res = number | boolean;

Extract

  • 与 Exclude<F, S>相反
  • 求交
  • 排除不同的,取出相同的

NonNullable

  • 从联合类型中排除 null 和 undefined
ts
type _target = null | undefined | boolean | string | number;
type _res = NonNullable<_target>;
// returns type boolean | string | number;

Coded by Yang_Lee