TypeScript Partial 使用的一个小技巧

简介: TypeScript Partial 使用的一个小技巧

TypeScript 提供了一些工具性质的类型定义来方便开发人员进行一些通用的类型定义。Partial 是其中之一。

看个例子:

interface Todo {
    title: string;
    description: string;
}
const todo1 = {
    title: 'organize desk',
    description: 'clear clutter',
};

我们将如何编写一个方法来获取我们的 Todo 实例并使用来自另一个 Todo 的值更新它?

下面是一种实现方法:

function updateTodo(originalTodo: Todo, fieldsToUpdateTodo: any) {
    return { ...originalTodo, ...fieldsToUpdateTodo };
}
const todo2 = updateTodo(todo1, {
    description: 'throw out trash',
});

这种方式不是很好,因为如果我们只想更新 description 属性,就不能够将 fieldsToUpdateTodo 的类型定义成 Todo,否则我们还得为第二个参数指定 title 属性。因此我们将 updateTodo 的第二个参数类型指定成 any,这样就失去了类型检查。


同样的,如果我们把 interface Todo 的属性设置成 optional,则第二个参数的类型可以定义成 Todo,但是 optional 属性同样失去了类型检查。


使用 Partial 可以完美解决这个问题。

function updateTodo(todo: Todo, fieldsToUpdate: Partial<Todo>) {
    return { ...todo, ...fieldsToUpdate }; 
}

在 Partial 中包装一个对象会将该对象上的所有属性标记为可选。

然后我们可以像这样调用我们的 updateTodo…

const todo2 = updateTodo(todo1, {
    description: 'throw out trash',
});

我们不会被迫从 Todo 界面设置每个属性。我们的 UpdateTodo 方法然后可以愉快地使用扩展运算符来合并两个 Todo。

相关文章
|
1月前
|
JavaScript
TypeScript工具类 Partial 和 Required 的详细讲解
TypeScript工具类 Partial 和 Required 的详细讲解
|
JavaScript 前端开发 索引
学习TypeScript24(TS进阶用法Partial & Pick )
keyof我们讲过很多遍了 将一个接口对象的全部属性取出来变成联合类型
93 0
|
JavaScript 前端开发 API
TypeScript 实用工具类型之 Partial 类型
TypeScript 实用工具类型之 Partial 类型
typescript59-泛型工具类型(partial )
typescript59-泛型工具类型(partial )
123 0
typescript59-泛型工具类型(partial )
typescript66-分析partial的实现
typescript66-分析partial的实现
84 0
typescript66-分析partial的实现
|
JavaScript
TypeScript里的工具类型Partial的用法
TypeScript里的工具类型Partial的用法
82 0
TypeScript里的工具类型Partial的用法
|
17天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性
|
17天前
|
JavaScript 前端开发
typescript 混合类型
typescript 混合类型
|
1天前
|
JavaScript 前端开发 IDE
TypeScript中的声明文件(.d.ts):扩展类型系统
TypeScript的`.d.ts`声明文件为JS库提供类型信息,增强IDE支持,如自动完成和类型检查。通过声明合并,可在全局作用域定义类型。示例包括为`my-library`创建声明模块,导出函数和接口。声明文件通常存于`@types`或指定`typeRoots`。用于旧JS代码的类型注解,如`myGlobalObject`。学习更多,参阅TypeScript官方文档。分享你的TS声明文件经验!
|
13天前
|
JavaScript 前端开发 安全
TypeScript:静态类型的动态语言
【6月更文挑战第9天】TypeScript是JavaScript的静态类型超集,解决JS类型安全问题,提供更强的代码组织和维护。它引入静态类型、接口和类,增强类型安全,减少运行时错误。TS与JS无缝集成,兼容现有库和框架,拥有丰富的开发工具和活跃社区。广泛应用在各种规模项目中,尤其提升复杂前端应用的代码质量。学习TypeScript对提升开发效率和代码可靠性极具价值。
25 10