专栏名称: 前端早读课
我们关注前端,产品体验设计,更关注前端同行的成长。 每天清晨五点早读,四万+同行相伴成长。
目录
相关文章推荐
前端之巅  ·  前端框架新格局:从过去一年的演进看未来趋势 ·  10 小时前  
黑龙江省商务厅  ·  听民意 汇民智:政府部门与代表委员的“高效联动” ·  9 小时前  
黑龙江省商务厅  ·  听民意 汇民智:政府部门与代表委员的“高效联动” ·  9 小时前  
前端早读课  ·  【第3471期】别再为人编写代码——未来属于 ... ·  17 小时前  
前端大全  ·  55 ... ·  2 天前  
前端早读课  ·  【第3469期】为什么 React ... ·  2 天前  
51好读  ›  专栏  ›  前端早读课

【早阅】深入理解 TypeScript 中的 infer 关键字

前端早读课  · 公众号  · 前端  · 2024-10-23 08:00

主要观点总结

本文介绍了TypeScript中新引入的'infer'关键字的使用场景、工作原理以及对TypeScript类型系统的影响。通过使用'infer',开发者可以在类型推断中动态地捕获和使用类型,更灵活地处理复杂的类型操作,如从函数参数、数组、元组和联合类型中提取类型。

关键观点总结

关键观点1: 'infer'关键字的主要用途

在条件类型中动态地捕获和使用类型,更灵活地处理复杂的类型操作。

关键观点2: 'infer'的基本用法

通常与条件类型结合使用,用于从函数、数组、元组和联合类型中提取类型。

关键观点3: 'infer'在React和泛型函数中的应用

在React中,可用于提取组件的prop类型;在泛型函数中,可用于从函数参数和返回值中推断类型。

关键观点4: 'infer'对TypeScript类型系统的影响

'infer'的引入增强了TypeScript的类型系统,提高了代码的可读性和可维护性,使得开发者能够更灵活地处理复杂的类型操作。


正文

作者:@Simohamed Marhraoui
原文:https://blog.logrocket.com/understanding-infer-typescript/

背景

TypeScript 是一种静态类型检查的编程语言,广泛用于前端和后端开发。随着 TypeScript 的不断发展,其类型系统变得越来越复杂和强大。最近,TypeScript 引入了一个新的关键字 infer ,它允许开发者在类型推断中动态地捕获和使用类型。本文详细介绍了 infer 的使用场景、工作原理以及对 TypeScript 类型系统的影响。

【早阅】改掉10个不好的TypeScript习惯

要点

infer 关键字的主要用途是在条件类型中动态地捕获和使用类型。通过 infer ,开发者可以更灵活地处理复杂的类型操作,例如从函数参数、数组、元组和联合类型中提取类型。

分析

基本用法

infer 通常与条件类型结合使用,例如

 T extends (...args: any[]) => infer R ? R : any

这里的 infer R 表示在满足条件时捕获函数的返回类型。

一个简单的例子是

 type ExtractStringType<T> = T extends `${infer U}` ? U : never;

它可以从字符串类型中提取实际的字符串类型。

从联合类型中提取类型

infer 在处理联合类型时非常有用。例如,

 type ExtractNumberType<T> = T extends `${infer U}` ? `${U}` extends `${number}` ? U : never : never;

可以从联合类型中提取数字类型。

从数组和元组中提取类型

infer 可以用于从数组和元组中提取元素类型。例如,

 type ExtractArrayElementType<T extends readonly any[]> = T extends readonly (infer U)[] ? U : never;

可以从数组类型中提取元素类型。

还可以用于递归地展平嵌套数组,例如







请到「今天看啥」查看全文