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 前端开发 API
TypeScript 实用工具类型之 Partial 类型
TypeScript 实用工具类型之 Partial 类型
|
JavaScript
TypeScript里的工具类型Partial的用法
TypeScript里的工具类型Partial的用法
81 0
TypeScript里的工具类型Partial的用法
|
10天前
|
JavaScript 前端开发 Java
TypeScript 类型兼容性
TypeScript 类型兼容性
|
10天前
|
JavaScript 前端开发
typescript 混合类型
typescript 混合类型
|
5天前
|
前端开发 JavaScript 安全
TypeScript作为一种静态类型的JavaScript超集,其强大的类型系统和面向对象编程特性为微前端架构的实现提供了有力的支持
【6月更文挑战第11天】微前端架构借助TypeScript提升开发效率和代码可靠性。 TypeScript提供类型安全,防止微前端间通信出错;智能提示和自动补全加速跨代码库开发;重构支持简化代码更新。通过定义公共接口确保一致性,用TypeScript编写微前端以保证质量。集成到构建流程确保顺利构建打包。在微前端场景中,TypeScript是强有力的语言选择。
21 2
|
6天前
|
JavaScript 前端开发 安全
TypeScript:静态类型的动态语言
【6月更文挑战第9天】TypeScript是JavaScript的静态类型超集,解决JS类型安全问题,提供更强的代码组织和维护。它引入静态类型、接口和类,增强类型安全,减少运行时错误。TS与JS无缝集成,兼容现有库和框架,拥有丰富的开发工具和活跃社区。广泛应用在各种规模项目中,尤其提升复杂前端应用的代码质量。学习TypeScript对提升开发效率和代码可靠性极具价值。
20 10
|
10天前
|
JavaScript 算法
TypeScript 类型推论
TypeScript 类型推论
|
10天前
|
JavaScript
TypeScript 泛型类型
TypeScript 泛型类型
|
10天前
|
JavaScript 前端开发 编译器
typescript 推断类型
typescript 推断类型