# 用可重用函数替换通用验证

# 用可重用函数替换通用验证

javascript 和 typescript 开发人员经常发现自己重复编写相同的条件。如果您是一名 web 开发人员,您可能遇到过如下代码:

const handlesavetextkeydown = (event: keyboardevent) => {   if (event.key === 'enter') {    //... save text   }}

在这种情况下,event.key 是字符串类型,例如,如果不小心在“enter”中包含空格,很容易引入错误。

为什么不将这个条件封装在一个函数中?

const handlesavetextkeydown = (event: keyboardevent) => {   if (checkisenterkey(event.key)) {    //... save text   }}

这确保了对 enter 键的所有检查都是一致且可靠的。

现在,考虑这个验证:

type value = null | object;const value = {} as value;if (typeof value === 'object') {  value; // value type is null | object}

尽管 typescript 很智能,但条件内的值仍然是 value 类型。这是因为 typeof null 返回“object”。

所以,你需要写:

if (value !== null && typeof value === 'object') {  value; // value type is object}

很多开发者遇到这种情况可能不会将其封装成函数,而是重复编写。

你一生中写过多少次同样的情况?

你犯过多少次同样的错误?

同样的条件你以后还会写多少次?

如果是我,我会这样做:

if (checkisobject(value)) {  value; // value type is object}

将通用条件封装在函数中有很多好处。

考虑以下示例:

const array = [0, 1, 2, 3, 4, 5, null, undefined];

让我们创建一个仅排除空值的数组。

您可以优先考虑简洁性并这样写:

const numbers = array.filter(boolean);

不幸的是,这并不理想。 0 也被评估为 false 并被排除。所以你需要写:

const numbers = array.filter(item => item !== null && item !== undefined);

这不是感觉很丑陋、不可重用的代码吗?

我可以写出更优雅的代码:

const numbers = array.filter(checkisnullish);

停止重复编写通用条件。它只会导致错误,并且代码的可读性会降低。

让我介绍一下我创建的一个名为 checker 的库。

这个实用函数库将一般 web 开发和低级开发中常用的条件表示为函数。所有函数都接受输入并返回布尔值。

在撰写本文时,它提供了丰富的函数来处理字符串、数字、布尔值和空值等数据类型。所有功能都经过测试、记录,并且易于开始使用。

让我们看一些现实世界的例子。

该库提供的包全部发布在jsr上。它们可以轻松安装在 npm、pnpm、yarn、bun 和 deno 项目中。

这里,我们以 npm 的 @checker/string 包为例。

安装软件包

在项目目录中运行以下命令:

  npx jsr add @checker/string

使用功能

  import { checkIsNotEmptyString, checkIsIndexFound } from "@checker/string";  const value = "Hello";  const formatted = value.trim();  if (checkIsNotEmptyString(formatted)) {    // formatted !== ''    // When formatted is not an empty string  }  const index = value.indexOf("el");  if (checkIsIndexFound(index)) {    // index !== -1    // When "el" is found in value  }

我不喜欢使用像 !some_condition 这样的逻辑否定运算符来反转布尔值。这是因为它是隐式的,简单地通过添加或省略它来反转布尔值可能会导致许多危险的情况。

因此,所有函数都定义了相应的 checkisnot~ 函数。

将通用条件封装在函数中。这样,代码变得更具可读性,错误也更容易发现。

感谢您的阅读。

以上就是# 用可重用函数替换通用验证的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491129.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
利用 JavaScript 的集合和映射实现高效的内容管理系统
上一篇 2025年12月19日 13:42:54
教程:如何将密钥集成到 Nuxtjs 中
下一篇 2025年12月19日 13:43:09

相关推荐

  • Safari浏览器怎么关闭标签页预览_Safari浏览器标签页缩略图预览关闭方法

    Safari浏览器怎么关闭标签页预览_Safari浏览器标签页缩略图预览关闭方法Safari浏览器怎么关闭标签页预览_Safari浏览器标签页缩略图预览关闭方法Safari浏览器怎么关闭标签页预览_Safari浏览器标签页缩略图预览关闭方法Safari浏览器怎么关闭标签页预览_Safari浏览器标签页缩略图预览关闭方法

    可通过Safari偏好设置关闭标签页预览功能,进入设置→标签页→取消勾选“在标签页中显示网站预览”;配合快捷键如Command+Shift+Tab切换标签,或启用系统辅助功能中的减少动态效果,进一步优化浏览体验。 如果您在使用Safari浏览器时发现标签页以缩略图形式预览显示,影响浏览效率或视觉体验…

    2026年9月29日 • 用户投稿
    100
  • 摄像机如何设置分辨率_摄像机分辨率设置对画质的影响与调整方法

    摄像机如何设置分辨率_摄像机分辨率设置对画质的影响与调整方法摄像机如何设置分辨率_摄像机分辨率设置对画质的影响与调整方法摄像机如何设置分辨率_摄像机分辨率设置对画质的影响与调整方法摄像机如何设置分辨率_摄像机分辨率设置对画质的影响与调整方法

    调整摄像机分辨率可解决画面模糊或文件过大问题。首先通过摄像机菜单进入“图像设置”选择所需分辨率,如1082×1080或3840×2160;其次可用配套软件如Quik或iVMS-4200远程设置,适合网络或运动相机;再者连接HDMI时需匹配显示设备原生分辨率,避免黑边;最后结合帧率与码率优化画质,4K…

    2026年9月29日 • 用户投稿
    200
  • windows怎么安装补丁包.msu文件_windows .msu格式补丁包的安装方法

    windows怎么安装补丁包.msu文件_windows .msu格式补丁包的安装方法windows怎么安装补丁包.msu文件_windows .msu格式补丁包的安装方法windows怎么安装补丁包.msu文件_windows .msu格式补丁包的安装方法windows怎么安装补丁包.msu文件_windows .msu格式补丁包的安装方法

    首先通过命令提示符使用wusa命令安装.msu补丁,其次可双击文件图形化安装,最后也可用PowerShell调用wusa.exe完成部署,三种方法均需按提示重启系统应用更新。 如果您下载了Windows系统的补丁包但不确定如何正确安装.msu格式的更新文件,可能是由于系统未正确识别或手动安装流程不熟…

    2026年9月29日 • 用户投稿
    000
  • 使用 Java 比较版本号:正则表达式的替代方案

    使用 Java 比较版本号:正则表达式的替代方案使用 Java 比较版本号:正则表达式的替代方案使用 Java 比较版本号:正则表达式的替代方案使用 Java 比较版本号:正则表达式的替代方案

    本文介绍了一种在 Java 中比较版本号的有效方法,避免了使用正则表达式的复杂性和潜在问题。通过自定义 Version 类并实现 Comparable 接口,可以将版本号字符串转换为整数数组,从而实现准确的版本比较。该方法不仅清晰易懂,而且具有更好的可维护性和可扩展性。 在软件开发中,经常需要比较版…

    2026年9月29日 • 用户投稿
    000
  • Linux CPU系统资源占用过高问题解析

    Linux CPU系统资源占用过高问题解析Linux CPU系统资源占用过高问题解析Linux CPU系统资源占用过高问题解析Linux CPU系统资源占用过高问题解析

    Linux CPU系统资源占用过高问题解析 在日常使用Linux系统的过程中,我们可能会遇到CPU资源占用过高的问题,这会导致系统响应变慢甚至影响系统的正常运行。本文将深入分析Linux系统中CPU资源占用过高的原因及解决方法,并给出具体的代码示例。 一、原因分析 进程占用CPU过高:有些进程占用C…

    2026年9月29日 • 用户投稿
    000
  • 如何在Power BI中集成AI Power BI使用AI视觉分析数据

    如何在Power BI中集成AI Power BI使用AI视觉分析数据如何在Power BI中集成AI Power BI使用AI视觉分析数据如何在Power BI中集成AI Power BI使用AI视觉分析数据如何在Power BI中集成AI Power BI使用AI视觉分析数据

    在power bi中集成ai需多步骤实现,而非简单添加模块。1. 使用内置ai视觉分析功能如“分解树”和“关键影响因素”快速识别数据模式;2. 通过azure服务如anomaly detector进行复杂数据分析并可视化结果;3. 在power query中利用ai辅助清洗数据,提升效率;4. 自行…

    2026年9月29日 • 用户投稿
    000
  • 怎样为公司批量安装Sublime_Sublime企业部署安装指南

    怎样为公司批量安装Sublime_Sublime企业部署安装指南怎样为公司批量安装Sublime_Sublime企业部署安装指南怎样为公司批量安装Sublime_Sublime企业部署安装指南怎样为公司批量安装Sublime_Sublime企业部署安装指南

    首先准备标准化安装包和配置文件,再通过组策略或脚本批量部署,随后配置中央许可,最后验证安装与设置一致性。 如果您需要为公司内的多台计算机安装Sublime Text编辑器,以实现统一开发环境配置,则可以通过自动化脚本和集中化配置管理来完成批量部署。以下是实现企业级批量安装的具体步骤: 一、准备安装包…

    2026年9月29日 • 用户投稿
    300
  • 抖音笔记怎么发视频?抖音怎么发布笔记作品

    抖音笔记怎么发视频?抖音怎么发布笔记作品抖音笔记怎么发视频?抖音怎么发布笔记作品抖音笔记怎么发视频?抖音怎么发布笔记作品抖音笔记怎么发视频?抖音怎么发布笔记作品

    随着抖音的不断发展,越来越多用户选择在这个平台上记录生活、展示才华、分享创意。其中,抖音笔记作为一个融合图文与视频的多功能创作工具,正受到广泛关注。那么,抖音笔记如何发布视频内容?接下来,本文将为你全面解析操作流程。 一、发布前的准备工作 在正式发布抖音笔记视频之前,建议完成以下准备步骤: 1. 拥…

    2026年9月29日 • 用户投稿
    000
  • 名字越来越长! 《幻想生活i》宣布12月推出大型免费更新DLC

    名字越来越长! 《幻想生活i》宣布12月推出大型免费更新DLC名字越来越长! 《幻想生活i》宣布12月推出大型免费更新DLC名字越来越长! 《幻想生活i》宣布12月推出大型免费更新DLC名字越来越长! 《幻想生活i》宣布12月推出大型免费更新DLC

    level-5在9月25日宣布,将为今年5月21日发售的热门游戏《幻想生活i 转转龙与窃时少女》(简称《幻想生活i》)推出一项全新的免费大型dlc——“暗黑商人乌鲁佐与幻影大陆”,预计于今年12月正式上线。同时,官方也公开了此次dlc的宣传视频。 宣传PV: 自发布以来,《幻想生活i》便广受玩家喜爱…

    2026年9月29日 • 用户投稿
    000
  • 文心一言官方主页直达链接 文心一言语言模型主页官方访问地址

    文心一言官方主页可通过百度智能云平台访问,官网地址为https://yiyan.baidu.com,用户需用百度账号登录或注册后使用,可体验文本生成、图像创作、代码编写等功能,部分高级功能需开通会员或企业权限,注意辨别官网以防假冒。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使…

    2026年9月29日
    000
  • 摄像机怎么连接电视播放_摄像机连接电视播放视频的详细操作步骤

    摄像机怎么连接电视播放_摄像机连接电视播放视频的详细操作步骤摄像机怎么连接电视播放_摄像机连接电视播放视频的详细操作步骤摄像机怎么连接电视播放_摄像机连接电视播放视频的详细操作步骤摄像机怎么连接电视播放_摄像机连接电视播放视频的详细操作步骤

    可通过HDMI线、AV线、存储卡或无线投屏将摄像机连接电视播放。1、HDMI连接:用HDMI线连接摄像机与电视,切换至对应HDMI输入源并开启摄像机回放。2、AV线连接:使用三色AV线对接视频音频接口,电视切换至AV模式后播放。3、存储卡播放:将SD卡插入电视卡槽或通过读卡器U盘连接USB口直接播放…

    2026年9月29日 • 用户投稿
    100
  • 为什么GPU在深度学习任务中比CPU更高效?

    为什么GPU在深度学习任务中比CPU更高效?为什么GPU在深度学习任务中比CPU更高效?为什么GPU在深度学习任务中比CPU更高效?为什么GPU在深度学习任务中比CPU更高效?

    GPU因高度并行架构和高带宽内存系统,能高效处理深度学习中海量矩阵运算,而CPU擅长串行任务,在数据预处理、模型调度等方面仍不可或缺,二者协同工作提升整体效率。 GPU在深度学习任务中表现出远超CPU的效率,核心原因在于其高度并行的架构和为大规模数据吞吐量设计的内存系统,这与深度学习中海量的矩阵运算…

    2026年9月29日 • 用户投稿
    000
  • windows怎么连接蓝牙_Windows连接蓝牙设备操作步骤

    windows怎么连接蓝牙_Windows连接蓝牙设备操作步骤windows怎么连接蓝牙_Windows连接蓝牙设备操作步骤windows怎么连接蓝牙_Windows连接蓝牙设备操作步骤windows怎么连接蓝牙_Windows连接蓝牙设备操作步骤

    首先开启蓝牙功能并确保系统可检测设备,接着通过设置添加蓝牙设备完成配对;检查硬件开关或功能键启用蓝牙模块,重启蓝牙支持服务恢复后台运行,最后更新或重装蓝牙驱动程序以解决连接问题。 如果您尝试在Windows电脑上连接蓝牙设备,但发现设备无法配对或连接不稳定,可能是由于蓝牙服务未开启或驱动程序存在问题…

    2026年9月29日 • 用户投稿
    100
  • 如何设置winrar打开压缩包不弹框_设置WinRAR无弹框打开

    如何设置winrar打开压缩包不弹框_设置WinRAR无弹框打开如何设置winrar打开压缩包不弹框_设置WinRAR无弹框打开如何设置winrar打开压缩包不弹框_设置WinRAR无弹框打开如何设置winrar打开压缩包不弹框_设置WinRAR无弹框打开

    通过调整WinRAR设置可实现无弹框静默打开压缩文件:一、修改关联程序行为,取消默认程序注册并精简关联菜单;二、启用内部查看模式,在WinRAR窗口中打开文件并允许重复调用;三、创建带静默参数的快捷方式,使用“-iimg”减少提示;四、禁用消息提示框,关闭完成对话框和打开确认提示。 如果您在使用Wi…

    2026年9月29日 • 用户投稿
    200
  • 抖音退货平台介入在哪里?平台介入一般好退款吗

    抖音退货平台介入在哪里?平台介入一般好退款吗抖音退货平台介入在哪里?平台介入一般好退款吗抖音退货平台介入在哪里?平台介入一般好退款吗抖音退货平台介入在哪里?平台介入一般好退款吗

    随着抖音电商平台的迅猛发展,越来越多用户选择在抖音上完成购物。然而在交易过程中,难免会遇到商品瑕疵、发错货、物流延迟等问题。此时,了解“抖音退货平台介入在哪里”以及如何申请平台介入,就显得尤为关键。本文将全面解析抖音售后纠纷处理机制。 一、什么是抖音退货平台介入? 抖音退货平台介入是抖音为保障消费者…

    2026年9月29日 • 用户投稿
    100
  • 学校管理系统的MySQL表结构设计策略

    学校管理系统的MySQL表结构设计策略学校管理系统的MySQL表结构设计策略学校管理系统的MySQL表结构设计策略学校管理系统的MySQL表结构设计策略

    学校管理系统的MySQL表结构设计策略 目前,随着信息技术的飞速发展,学校管理系统已经成为现代学校管理的必要工具。MySQL作为一种常用的关系型数据库管理系统,在学校管理系统的开发中具有重要的地位。本文将探讨学校管理系统中MySQL表结构的设计策略,并给出具体的代码示例,旨在帮助开发人员更好地构建高…

    2026年9月29日 • 用户投稿
    000
  • 以“低价水果”诱导消费者下单,抖音电商公布打击提货卡引流诈骗进展

    以“低价水果”诱导消费者下单,抖音电商公布打击提货卡引流诈骗进展以“低价水果”诱导消费者下单,抖音电商公布打击提货卡引流诈骗进展以“低价水果”诱导消费者下单,抖音电商公布打击提货卡引流诈骗进展以“低价水果”诱导消费者下单,抖音电商公布打击提货卡引流诈骗进展

    感谢网友 hh_kk 的线索提供! 9 月 25 日消息,抖音电商安全与信任中心昨日发布通报称,近期平台积极协同相关执法部门,持续加码治理行动,严厉打击利用提货卡进行引流诈骗的违法行为。在向主管部门反馈线索后,于多地相关部门指导下,联合查处并捣毁多个涉嫌实施引流诈骗的物流中转点及印刷窝点,现场查扣大…

    2026年9月29日 • 用户投稿
    000
  • Mac上怎么用Homebrew装Sublime_Homebrew安装Sublime教程

    Mac上怎么用Homebrew装Sublime_Homebrew安装Sublime教程Mac上怎么用Homebrew装Sublime_Homebrew安装Sublime教程Mac上怎么用Homebrew装Sublime_Homebrew安装Sublime教程Mac上怎么用Homebrew装Sublime_Homebrew安装Sublime教程

    首先确认Mac上已安装Homebrew,若未安装需通过官方脚本进行安装;随后使用brew install –cask sublime-text命令安装Sublime Text;最后创建软链接ln -s /Applications/Sublime Text.app/Contents/Sha…

    2026年9月29日 • 用户投稿
    000
  • 大疆无人机怎么拍照_大疆无人机拍照模式与参数设置详细教程

    大疆无人机怎么拍照_大疆无人机拍照模式与参数设置详细教程大疆无人机怎么拍照_大疆无人机拍照模式与参数设置详细教程大疆无人机怎么拍照_大疆无人机拍照模式与参数设置详细教程大疆无人机怎么拍照_大疆无人机拍照模式与参数设置详细教程

    选择合适拍照模式、设置照片格式与分辨率、调整曝光参数、启用对焦与防闪烁功能、配置色彩模式,可解决大疆无人机画面模糊、曝光异常等问题,确保航拍成像质量。 如果您准备使用大疆无人机进行航拍,但发现画面模糊、曝光异常或无法保存照片,可能是由于拍照模式或参数设置不当所致。以下是针对大疆无人机拍照功能的详细设…

    2026年9月29日 • 用户投稿
    000
  • firefox浏览器工具栏不见了怎么调出来 Firefox浏览器找回消失的工具栏技巧

    firefox浏览器工具栏不见了怎么调出来 Firefox浏览器找回消失的工具栏技巧firefox浏览器工具栏不见了怎么调出来 Firefox浏览器找回消失的工具栏技巧firefox浏览器工具栏不见了怎么调出来 Firefox浏览器找回消失的工具栏技巧firefox浏览器工具栏不见了怎么调出来 Firefox浏览器找回消失的工具栏技巧

    首先检查是否误触F11进入全屏模式,按F11退出后工具栏应恢复;若未解决,点击右上角菜单按钮→“自定义…”→开启“导航工具栏”和“书签工具栏”;仍无效时进入“设置”→“恢复默认设置”重置界面;最后可尝试在about:support页面备份并重建用户配置文件以修复可能的损坏。 如果您在使用…

    2026年9月29日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信