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

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

十一、泛型和类型体操

泛型和类型体操(Type Gymnastics)是 TypeScript 中高级类型系统的重要组成部分。它们提供了强大的工具和技巧,用于处理复杂的类型操作和转换。

1.泛型(Generics)

1 泛型函数

泛型函数允许我们在函数定义中使用类型参数,以便在函数调用时动态指定类型。例如:

 

function identity(arg: T): T {
  return arg;}
let result = identity(42);  // result 的类型为 number

 

在上面的示例中,identity 函数使用类型参数 T,并返回与输入类型相同的值。通过显式传递泛型参数,我们可以确保在函数调用时指定了具体的类型。

2 泛型接口

泛型接口允许我们在接口定义中使用类型参数,以便在实现该接口时指定具体的类型。例如:

 

interface Container {
  value: T;}
let container: Container = { value: 42 };

 

在上面的示例中,我们定义了一个泛型接口 Container,它包含一个类型参数 T。通过指定 Container,我们创建了一个具体的实现,其中的 value 属性类型为 number

 

 

3 泛型类

泛型类允许我们在类定义中使用类型参数,以便在创建类的实例时指定具体的类型。例如:

 

class Stack {
  private items: T[] = [];
  push(item: T) {
    this.items.push(item);
  }
  pop(): T | undefined {
    return this.items.pop();
  }}
let stack = new Stack();
stack.push(1);
stack.push(2);let item = stack.pop();  // item 的类型为 number | undefined

 

在上面的示例中,我们定义了一个泛型类 Stack,它使用类型参数 T 来表示堆栈中的元素类型。通过创建 Stack 的实例,我们限制了堆栈中的元素必须为 number 类型。

  1. 类型体操(Type Gymnastics)

1 条件类型(Conditional Types)

条件类型允许我们根据输入类型的条件判断结果来选择不同的类型。条件类型的语法形式为:

 

T extends U ? X : Y

 

其中,T 是待检查的类型,U 是条件类型,X 是满足条件时返回的类型,Y 是不满足条件时返回的类型。

 

下面是一个使用条件类型的示例:

 

type Check = T extends string ? true : false;
type Result = Check;  // Result 的类型为 true

 

在上面的示例中,我们定义了一个条件类型 Check,它接受一个类型参数 T。如果 Tstring 类型,那么 Check 的类型将是 true,否则为 false


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

相关文章
|
4月前
|
JavaScript 前端开发
揭秘 TypeScript 条件类型:超越简单类型检查
揭秘 TypeScript 条件类型:超越简单类型检查
|
4月前
|
JavaScript 安全 索引
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
|
4月前
|
JavaScript 安全 IDE
TypeScript 类型体操:别让 `any` 毁了你的安全网!
TypeScript 类型体操:别让 `any` 毁了你的安全网!
|
4月前
|
安全 JavaScript 编译器
TypeScript 泛型:解锁灵活且安全的代码重用
TypeScript 泛型:解锁灵活且安全的代码重用
|
4月前
|
JavaScript 安全 编译器
TypeScript 类型守卫:让你的类型系统更智能
TypeScript 类型守卫:让你的类型系统更智能
|
9月前
|
存储 安全 JavaScript
TypeScript-内置应用程序类型-Recode
通过使用 `Record` 类型,开发者可以显著提升代码的安全性和可维护性。无论是配置对象、字典结构还是动态表单,`Record` 类型都提供了一个简洁、类型安全的解决方案。
434 82
|
JavaScript 前端开发 安全
深入理解TypeScript:增强JavaScript的类型安全性
【10月更文挑战第8天】深入理解TypeScript:增强JavaScript的类型安全性
303 0
|
JavaScript 前端开发 开发者
深入理解TypeScript:类型系统与实用技巧
【10月更文挑战第8天】深入理解TypeScript:类型系统与实用技巧
|
JavaScript 前端开发 安全
使用 TypeScript 加强 React 组件的类型安全
【10月更文挑战第1天】使用 TypeScript 加强 React 组件的类型安全
307 106
|
设计模式 JavaScript 安全
TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等
本文深入探讨了TypeScript性能优化及代码质量提升的重要性、方法与策略,包括合理使用类型注解、减少类型断言、优化模块导入导出、遵循编码规范、加强代码注释等,旨在帮助开发者在保证代码质量的同时,实现高效的性能优化,提升用户体验和项目稳定性。
372 6