21、TypeScript 泛型与条件类型的深入解析

深入理解TypeScript泛型与条件类型

TypeScript 泛型与条件类型的深入解析

1. 泛型类型的基础认知

在编程中,我们在值的层面可以编写像 map filter reduce 这样的高阶函数,它们可以接受其他函数作为参数,这为我们提取共享行为提供了极大的灵活性。那么在类型层面是否有类似的功能呢?目前来说,答案是否定的。这类功能通常被称为“类型上的函数的函数”,也就是“高阶类型”。虽然目前没有,但这并不限制我们使用泛型类型,只是会限制我们的表达方式。

1.1 泛型类型的思考方式

我们可以把泛型类型看作是类型之间的函数。在编写泛型时,有以下几点需要记住:
- 用 extends 来约束类型参数的范围,就像使用类型注解来约束函数参数一样。
- 选择能提高代码可读性的类型参数名称,并为它们编写 TSDoc 注释。
- 把泛型函数和类看作是在概念上定义有利于类型推断的泛型类型。

2. 避免不必要的类型参数

编写泛型函数很有趣,但很容易过度使用类型参数。过多的类型参数或在不需要的地方使用约束会使类型推断变得困难,让函数的调用者感到沮丧。这里有一个“泛型黄金法则”:类型参数应该出现两次。类型参数的作用是关联多个值的类型,如果一个类型参数在函数签名中只出现一次,那么它就没有起到关联作用。

2.1 示例分析

2.1.1 身份函数
function identity<T>(arg
MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值