typeScript内置工具类型,通俗易懂,例子解释(Record、Readonly、Required、Partial、Extract、Exclude、Pick、Omit、NonNullable..)

warning: 这篇文章距离上次修改已过280天,其中的内容可能已经有所变动。

Record、Readonly、Required、Partial 是 TypeScript 中常用的内置工具类型,以下是它们的简单解释和使用示例:

  1. Record:

    Record 是一个构造类型,用于创建具有某种值类型的对象类型。




type MyRecord = Record<string, number>;
 
const myRecord: MyRecord = {
  key1: 1,
  key2: 2,
};

在这个例子中,MyRecord 是一个字符串到数字的映射,任何其他键值对都会导致类型错误。

  1. Readonly:

    Readonly 用于创建一个类型,其所有属性都被标记为只读。




type MyObject = {
  prop: string;
};
 
type ReadOnlyMyObject = Readonly<MyObject>;
 
const obj: ReadOnlyMyObject = {
  prop: "Hello",
};
 
obj.prop = "World"; // Error: 属性是只读的

在这个例子中,ReadOnlyMyObjectprop 属性不能被重新分配,尝试这样做会导致编译时错误。

  1. Required:

    Required 用于创建一个类型,其所有属性都变为必须的。




type MyObject = {
  prop?: string;
};
 
type RequiredMyObject = Required<MyObject>;
 
const obj: RequiredMyObject = {
  prop: "Hello", // OK
};

在这个例子中,RequiredMyObjectprop 属性现在是必须的,如果在实例化 RequiredMyObject 类型的对象时没有提供 prop,将会导致编译时错误。

  1. Partial:

    Partial 用于创建一个类型,其所有属性都变为可选的。




type MyObject = {
  prop: string;
};
 
type PartialMyObject = Partial<MyObject>;
 
const obj: PartialMyObject = {
  prop: "Hello", // OK
  // 没有 'prop' 也不会导致错误
};

在这个例子中,PartialMyObjectprop 属性现在是可选的,不提供 prop 也不会导致编译时错误。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日