当前位置: 首页 > news >正文

ts检验-变量的类型不会包含 undefined的几种处理方法

文章目录

      • 1. 确认索引是否存在
      • 2. 使用非空断言(Non-null assertion)
      • 3. 使用默认值
      • 4. 类型断言(Type Assertion)
      • 综合示例


import { AxiosPromise } from 'axios';type ApiFunction = (params: any) => AxiosPromise<any>;type ApiTuple = [ApiFunction, ApiFunction, ApiFunction];
type ApiTuple2 = [ApiFunction, ApiFunction];export interface ApiMaps {key1: ApiTuple | ApiTuple2;key2: ApiTuple | ApiTuple2;key3: ApiTuple | ApiTuple2;
}

使用
let apiArr : ApiMaps = [api1,api2,api3]
apiArr [2] 是会报错。因为有可能是undefined,

那么为了处理 TypeScript 报错 “Argument of type ‘ApiFunction | undefined’ is not assignable to parameter of type ‘DelApiFunction’,Type ‘undefined’ is not assignable to type ‘DelApiFunction’”,你需要确保 curDelApi 变量的类型不会包含 undefined。有几种方法可以做到这一点:

1. 确认索引是否存在

首先,确保你访问 apiMaps 对象时,索引值存在且有效。可以在赋值之前进行检查:

let curDelApi: ApiFunction | undefined;if (variable.fooType in apiMaps && apiMaps[variable.fooType ][2]) {curDelApi = apiMaps[variable.fooType ][2];
}if (curDelApi) {const { handleDelete } = useDelete(curDelApi, performSearch);
}

2. 使用非空断言(Non-null assertion)

如果你确定 apiMaps[variable.fooType ][2] 在这个上下文中是存在的,可以使用 TypeScript 的非空断言操作符 !

let curDelApi = apiMaps[variable.fooType ][2]!;
const { handleDelete } = useDelete(curDelApi, performSearch);

3. 使用默认值

可以给 curDelApi 赋一个默认值,确保它不是 undefined

let curDelApi = apiMaps[variable.fooType ][2] ?? defaultApiFunction;
const { handleDelete } = useDelete(curDelApi, performSearch);

4. 类型断言(Type Assertion)

如果你非常确定 apiMaps[variable.fooType ][2] 不是 undefined,可以进行类型断言:

let curDelApi = apiMaps[variable.fooType ][2] as ApiFunction;
const { handleDelete } = useDelete(curDelApi, performSearch);

综合示例

将这些方法综合在一起,你可以根据具体情况选择合适的解决方案:

import { AxiosPromise } from 'axios';type ApiFunction = (params: any) => AxiosPromise<any>;type ApiTuple = [ApiFunction, ApiFunction, ApiFunction];
type ApiTuple2 = [ApiFunction, ApiFunction];export interface ApiMaps {Warehouse: ApiTuple | ApiTuple2;Partner: ApiTuple | ApiTuple2;System: ApiTuple | ApiTuple2;
}const defaultApiFunction: ApiFunction = (params: any) => {// default implementationreturn axios.get('/default-endpoint', { params });
};const apiMaps: ApiMaps = {Warehouse: [defaultApiFunction, defaultApiFunction, defaultApiFunction],Partner: [defaultApiFunction, defaultApiFunction],System: [defaultApiFunction, defaultApiFunction, defaultApiFunction],
};let curDelApi = apiMaps[variable.fooType ][2] ?? defaultApiFunction;
const { handleDelete } = useDelete(curDelApi, performSearch);

在这个例子中,我们使用了默认值 defaultApiFunction 来确保 curDelApi 总是有一个有效的函数。你可以根据自己的业务逻辑来定义 defaultApiFunction

http://www.lryc.cn/news/401489.html

相关文章:

  • springboot 集成minio,启动报错
  • bignumber.js库,解决前端小数精度问题
  • Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截
  • 通过手机控制家用电器的一个程序的设计(一)
  • 批量提取PDF指定区域内容到 Excel , 根据PDF文件第一行文字来自动重命名v1.3-附思路和代码实现
  • 【持续集成_05课_Linux部署SonarQube及结合开发项目部署】
  • 人像视频预处理【时间裁剪+画面裁切+调整帧率】
  • SpringBoot+HttpClient实现文件上传下载
  • QT--控件篇四
  • opencv—常用函数学习_“干货“_2
  • 解析CSS与JavaScript的使用方法及ECMAScript语法规则
  • 从零开始学习嵌入式----结构体struct和union习题回顾
  • 建筑产业网元宇宙的探索与实践
  • 比较RMI、HTTP+JSON/XML、gRPC
  • 软件工程-可行性分析
  • iOS ------ 消息传递和消息转发
  • 计算机视觉之Vision Transformer图像分类
  • 【深度学习】BeautyGAN: 美妆,化妆,人脸美妆
  • RocketMQ~架构与工作流程了解
  • 学习Python的IDE功能--(一)入门导览
  • gdb调试多线程程序
  • 实战GraphRAG(一):初步体验GraphRAG及其与RAG的对比
  • 37、PHP 实现一个链表中包含环,请找出该链表的环的入口结点
  • LIMS系统对实验室管理有哪些帮助?
  • 在GPU上运行PyTorch
  • 【内网穿透】打洞笔记
  • 第59期|GPTSecurity周报
  • 算法2--贪心算法
  • 本地部署 EVE: Unveiling Encoder-Free Vision-Language Models
  • 阿里云CDN- https(设计支付宝春节开奖业务)