首页
学习
活动
专区
圈层
工具
发布
技术百科首页 >TypeScript >TypeScript 中的泛型是什么?如何使用?

TypeScript 中的泛型是什么?如何使用?

词条归属:TypeScript

1. 泛型的基本概念

  • 泛型允许函数、类、接口在保持类型安全的同时支持多种类型
  • 类型参数(如 T、K、V)是类型的"占位符",在调用时被具体的类型替换
  • 泛型避免了使用 any 丢失类型信息,也避免了为每种类型编写重复代码

2. 泛型函数

  • 基础用法:function identity<T>(arg: T): T { return arg; }
  • 类型推断:调用时 TypeScript 通常能自动推断类型参数,如 identity(42) 中 T 被推断为 number
  • 多个类型参数:function pair<T, U>(first: T, second: U): [T, U]

3. 泛型约束

  • 使用 extends 关键字约束类型参数必须满足的条件
  • 例如 function getLength<T extends { length: number }>(item: T): number 确保 T 具有 length 属性
  • keyof 约束:function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] 确保 key 是 T 的合法属性名

4. 条件类型与 infer

  • 条件类型根据类型关系选择分支:type IsArray<T> = T extends any[] ? true : false
  • infer 关键字在条件类型中提取未知类型:type ReturnType<T> = T extends (...args: any[]) => infer R ? R : never
  • 条件类型会自动对联合类型进行分配(distributive)

5. 映射类型

  • 遍历类型的每个属性并进行转换:type Readonly<T> = { readonly [K in keyof T]: T[K] }
  • TypeScript 内置的工具类型(Partial、Required、Pick、Omit、Record 等)均基于映射类型实现
  • 支持键重映射:type Getters<T> = { [K in keyof T as get${Capitalize<string & K>}]: () => T[K] }
相关文章
TypeScript 中的泛型
泛型(Generics)是一种编程语言特性,允许在定义函数、类、接口等时使用占位符来表示类型,而不是具体的类型。
言程序
2024-07-06
4.2K0
TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂
 最近在学TypeScript,然后整理了一下关于TypeScript中泛型的一些笔记。
痴心阿文
2022-11-21
5.1K0
typescript的泛型_泛型有什么用
指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。
全栈程序员站长
2022-09-16
1.9K0
Java泛型详解:为什么使用泛型?如何使用泛型?
大家好!今天我要和大家一起探讨的是Java泛型,一个让我们的代码更加灵活、可读性更强的强大特性。相信很多人都听说过泛型,但对于为什么使用泛型、如何使用泛型以及泛型的实现原理和本质,可能还有些困惑。别担心,我会通过通俗易懂的语言,带你深入了解这一话题,并为你提供一些实例演示。
默 语
2024-11-20
1.5K0
深入学习下 TypeScript 中的泛型
泛型是静态类型语言的基本特征,允许开发人员将类型作为参数传递给另一种类型、函数或其他结构。当开发人员使他们的组件成为通用组件时,他们使该组件能够接受和强制在使用组件时传入的类型,这提高了代码灵活性,使组件可重用并消除重复。
用户11255396
2024-08-25
3.6K0
点击加载更多
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
领券