带你读《现代TypeScript高级教程》十一、泛型和类型体操(3)

简介: 带你读《现代TypeScript高级教程》十一、泛型和类型体操(3)

带你读《现代TypeScript高级教程》十一、泛型和类型体操(2)https://developer.aliyun.com/article/1348496?groupCode=tech_library


b)Required

Required 是 TypeScript 中的另一个内置泛型类型,它可以将给定类型 T 中的所有可选属性转换为必需属性。这对于确保对象的完整性非常有用。

 

interface Person {
  name?: string;
  age?: number;}
type RequiredPerson = Required;
const requiredPerson: RequiredPerson = { name: 'John', age: 25 };  // name 和 age 属性是必需的

在上面的示例中,Required Person 接口中的所有可选属性变为必需属性,从而创建了一个要求完整性的 RequiredPerson 类型。

c)Pick

Pick 是 TypeScript 中的另一个内置泛型函数,它可以从给定类型 T 中选择指定的属性 K 组成一个新的类型。

 

interface Person {
  name: string;
  age: number;
  address: string;}
type NameAndAge = Pick;
const person: NameAndAge = { name:
 'John', age: 25 };  // 只包含 name 和 age 属性

 

在上面的示例中Pick 从 Person 接口中选择了 'name' 'age' 属性,创建了一个新的类型 NameAndAge

 

我们还可以结合泛型和内置泛型函数来实现更复杂的类型操作。以下是一个示例,展示了如何使用 Pick 和泛型来创建一个函数,该函数从给定对象中选择指定属性,并返回一个新的对象。

 

function pickProperties(obj: T, keys: K[]): Pick {
  const result: Partial = {};
  for (const key of keys) {
    result[key] = obj[key];
  }
  return result as Pick;}
interface Person {
  name: string;
  age: number;
  address: string;}
const person: Person = {
  name: 'John',
  age: 25,
  address: '123 Main St'};
const nameAndAge = pickProperties(person, ['name', 'age']);  // 只包含 name 和 age 属性console.log(nameAndAge);  // 输出: { name: 'John', age: 25 }

 

在上面的示例中,pickProperties 函数接受一个泛型参数 T 和一个属性数组 keys。通过使用 Pick,我们将从给定对象 obj 中选择指定的属性 keys,并创建一个新的对象。

 

这个例子结合了泛型、内置泛型函数 Pickkeyof 操作符和 extends 关键字,展示了如何在 TypeScript 中处理复杂的类型操作和转换。

 

当涉及到官方内置的泛型函数时,还有一些重要的函数值得分析。让我们继续探讨一些常用的官方内置泛型函数以及它们的使用。

  1. Exclude

Exclude 是 TypeScript 中的一个内置泛型函数,用于从类型 T 中排除类型 U。它返回一个新类型,该新类型包含在 T 中存在但不在 U 中存在的成员类型。

 

type T = Exclude<"a" | "b" | "c", "a" | "b">;  // T 的类型为 "c"

 

在上面的示例中,Exclude<"a" | "b" | "c", "a" | "b"> 排除了类型 "a" 和 "b",返回类型为 "c"。


带你读《现代TypeScript高级教程》十一、泛型和类型体操(4)https://developer.aliyun.com/article/1348494?groupCode=tech_library

相关文章
|
5天前
|
JavaScript 安全 前端开发
TypeScript类型声明:基础与进阶
通过本文的介绍,我们详细探讨了TypeScript的基础与进阶类型声明。从基本数据类型到复杂的泛型和高级类型,TypeScript提供了丰富的工具来确保代码的类型安全和可维护性。掌握这些类型声明能够帮助开发者编写更加健壮和高效的代码,提高开发效率和代码质量。希望本文能为您在使用TypeScript时提供实用的参考和指导。
13 2
|
19天前
|
JavaScript 开发者
在 Babel 插件中使用 TypeScript 类型
【10月更文挑战第23天】可以在 Babel 插件中更有效地使用 TypeScript 类型,提高插件的开发效率和质量,减少潜在的类型错误。同时,也有助于提升代码的可理解性和可维护性,使插件的功能更易于扩展和升级。
|
30天前
|
JavaScript 前端开发
TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第11天】TypeScript【类型别名、泛型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
1月前
|
JavaScript 前端开发 Java
TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第10天】TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
1月前
|
JavaScript 前端开发 安全
TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第9天】TypeScript【基础类型】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
18天前
|
JavaScript 前端开发 安全
TypeScript进阶:类型系统与高级类型的应用
【10月更文挑战第25天】TypeScript作为JavaScript的超集,其类型系统是其核心特性之一。本文通过代码示例介绍了TypeScript的基本数据类型、联合类型、交叉类型、泛型和条件类型等高级类型的应用。这些特性不仅提高了代码的可读性和可维护性,还帮助开发者构建更健壮的应用程序。
22 0
|
2月前
|
JavaScript
typeScript进阶(9)_type类型别名
本文介绍了TypeScript中类型别名的概念和用法。类型别名使用`type`关键字定义,可以为现有类型起一个新的名字,使代码更加清晰易懂。文章通过具体示例展示了如何定义类型别名以及如何在函数中使用类型别名。
40 1
typeScript进阶(9)_type类型别名
|
1月前
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
45 0
|
1月前
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
2月前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
41 1