千家信息网

typescript中范型的示例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关typescript中范型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。范型在定义泛型后,有两种方式使用,一种是传入泛型类型,另一种使用
千家信息网最后更新 2026年11月03日typescript中范型的示例分析

这篇文章给大家分享的是有关typescript中范型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

范型

在定义泛型后,有两种方式使用,一种是传入泛型类型,另一种使用类型推断。

declare function fn(arg: T): T; // 定义一个泛型函数 const fn1 = fn('hello'); // 第一种方式,传入泛型类型 string const fn2 = fn(1); // 第二种方式,从参数 arg 传入的类型 number,来推断出泛型 T 的类型是 number

一个扁平数组结构建树形结构例子:

// 转换前数据 const arr = [ { id: 1, parentId: 0, name: 'test1'}, { id: 2, parentId: 1, name: 'test2'}, { id: 3, parentId: 0, name: 'test3'} ]; // 转化后 [ { id: 1, parentId: 0, name: 'test1',     childrenList: [ { id: 2, parentId: 1, name: 'test2', childrenList: [] } ] },     { id: 3, parentId: 0, name: 'test3', childrenList: [] } ]interface Item {     id: number;     parentId: number;     name: string; }// 传入的 options 参数中,得到 childrenKey 的类型,然后再传给 TreeIteminterface Options {     childrenKey: T; } type TreeItem = Item & { [key in T]: TreeItem[] | [] }; declare function listToTree(list: Item[], options: Options): TreeItem[]; listToTree(arr, { childrenKey: 'childrenList' }).forEach(i => i.childrenList)

infer

表示在 extends 条件语句中待推断的类型变量。

type ParamType = T extends (param: infer P) => any ? P : T;

这句话的意思是:如果 T 能赋值给 (param: infer P) => any,则结果是 (param: infer P) => any 类型中的参数 P,否则返回为 T。

interface User {     name: string;     age: number; } type Func = (user: User) => void type Param = ParamType; // Param = User type AA = ParamType; // string

例子:

// [string, number] -> string | numbertype ElementOf = T extends Array ? E : never;type TTuple = [string, number];type ToUnion = ElementOf; // string | number// T1 | T2 -> T1 & T2type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;type Result = UnionToIntersection; // T1 & T2

感谢各位的阅读!关于"typescript中范型的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

类型 范型 参数 方式 推断 示例 分析 例子 内容 更多 篇文章 结构 不错 实用 函数 变量 意思 扁平 数据 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 互联网科技工作委员会主任 互联网扶贫科技 朗新科技与工业互联网 互联网科技金融 互联网 科技创业 九亚互联网科技 善班互联网科技有限公司 镁科技互联网资讯平台 无锡溥仪互联网科技有限公司 金融科技与互联网金融相同和不同 茂名市互联网科技产业园 花神(南京)互联网科技有限公司 中国科技创新与世界互联网大会 济南有互联网科技公司吗 广州互联网高科技取餐柜 易租星互联网科技有限公司 互联网领先科技成果宣传视频 银川新华互联网科技学校招聘 株洲百竞科技的互联网营销顾问 新华互联网科技学院 互联网与科技发展 喔噻互联网科技 互联网金融科技创新 互联网科技公司需要的职位 互联网金融科技展 互联网科技人工智能实验室 徐州市互联网科技有限公司 互联网第三次科技革命特征 易租星互联网科技有限公司
0