当前位置: 首页 > news >正文

TypeScript 工具类型

这些工具类型是 TypeScript 提供的强大功能,用于操作和转换类型。下面是每个工具类型的简要说明和示例:

1、Record

let value: Record<string, any> = { name: "", age: 0, desc: [] };
let value2: { [key: string]: any } = { name: "", age: 0, desc: [] };

2、Partial<T>: 将类型 T 的所有属性设置为可选。

interface Person {name: string;age: number;}type PartialPerson = Partial<Person>; // { name?: string; age?: number; }let value: PartialPerson = {};let value2: PartialPerson = { name: "" };let value3: PartialPerson = { age: 0 };

3、 Required<T>: 将类型 T 的所有属性设置为必选。


interface PartialPerson {name?: string;age?: number;
}type RequiredPerson = Required<PartialPerson>; // { name: string; age: number; }let value: RequiredPerson = { name: "", age: 0 };

4、 Exclude<T, U>: 从类型 T 中排除 U 的类型。

type T = string | number | boolean;type U = string | number;type Excluded = Exclude<T, U>; // 结果为 booleanlet value: Excluded = false;

5、Omit<T, K>: 从类型 T 中移除属性 K。

interface Person {name: string;age: number;address: string;}type WithoutAddress = Omit<Person, 'address'>; // 结果为 { name: string; age: number; }let value: WithoutAddress = { name: "", age: 0 };

6、Readonly<T>: 将类型 T 的所有属性设置为只读。

interface Person {readonly name: string;readonly age: number;}type ReadonlyPerson = Readonly<Person>;let value: ReadonlyPerson = { name: '', age: 0 };

7、 Pick<T, K>: 从类型 T 中选取指定属性 K 构造新类型。

interface Person {name: string;age: number;address: string;
}type NameAndAge = Pick<Person, 'name' | 'age'>; // { name: string; age: number; }let value: NameAndAge = { name: '', age: 0 };

8、NonNullable<T>: 从类型 T 中排除 null 和 undefined。

type NullableString = string | null | undefined;
type NonNullableString = NonNullable<NullableString>; // 结果为 stringlet value: NonNullableString = '';

9、ReturnType<T>: 获取函数类型 T 的返回值类型。

type Func = () => string;
type Result = ReturnType<Func>; // 结果为 stringlet value: Result = '';

 10、Parameters<T>: 获取函数类型 T 的参数类型组成的元组。

type Func = (x: number, y: string) => boolean;
type Args = Parameters<Func>; // 结果为 [number, string]let value: Args = [0, ''];

 11、Overwrite<T, U>: 使用 U 中的属性覆盖 T 中的对应属性。

type T = { a: number; b: string };
type U = { b: boolean; c: string };
type Overwrite<T, U> = Omit<T, keyof U> & U;
type OverwriteType = Overwrite<T, U>; // 结果为 { a: number; b: boolean; c: string; }let value: OverwriteType = { a: 0, b: true, c: '' };

12、Intersection<T, U>: 返回 T 和 U 的交集类型。

type T = { a: number; b: string };
type U = { b: boolean; c: string };
type Intersection<T, U> = Omit<T, keyof Omit<T, keyof U>>;
type Intersected = Intersection<T, U>; // 结果为 { b: string; }let value: Intersected = { b: '' };

http://www.lryc.cn/news/347204.html

相关文章:

  • [Kotlin]创建一个私有包并使用
  • 鸿蒙应用开发者高级认证指南及参考资料整理(含详细参考答案)
  • 数据匿名化技术
  • HTML学习笔记汇总
  • 初始JSVMP
  • 【机器学习数据可视化-04】Pyecharts数据可视化宝典
  • 通过 Java 操作 redis -- zset 有序集合基本命令
  • 力扣 516. 最长回文子序列 python AC
  • 数据库编程
  • (docker)进入容器后如何使用本机gpu
  • java基础知识点总结2024版(8万字超详细整理)
  • vue中使用element的i18n语言转换(保姆式教程-保证能用)
  • 01 设计模式--单例模式
  • css backdrop-filter 实现背景滤镜
  • AR人脸道具SDK解决方案,实现道具与人脸的自然融合
  • Windows安装RabbitMQ教程(附安装包)
  • 这个问题无人能解,菜鸟勿进
  • 揭秘高效引流获客的艺术:转化技巧大公开
  • 【Unity 鼠标输入检测】
  • LeetCode hot100-33-Y
  • C++和Python通信引文道路社评电商大规模行为图结构数据模型
  • 单片机-点亮第一盏灯
  • C++组合类
  • Linux学习笔记3
  • 免费证件照一键换底色
  • 使用 FFmpeg 从音视频中提取音频
  • GraphQL在现代Web应用中的应用与优势
  • socket编程 学习笔记 理解
  • SC-Lego-LOAM建图与ndt_localization的实车实现
  • vs code中如何使用git