您现在的位置是:首页 > 编程 > 

TypeScript 中的类型检查实用函数

2025-07-24 11:56:19
TypeScript 中的类型检查实用函数 TypeScript 中的类型检查实用函数一、概述在前端开发中,我们经常需要判断变量的类型以进行相应的操作或处理。TypeScript 提供了基础的类型检查,但有时我们需要更复杂或更灵活的类型检查。这篇博客文章将介绍一组实用函数,用于各种常见的类型检查。二、代码实现代码语言:javascript代码运行次数:0运行复制// 禁用一些 ESLint 规则,

TypeScript 中的类型检查实用函数

TypeScript 中的类型检查实用函数一、概述

在前端开发中,我们经常需要判断变量的类型以进行相应的操作或处理。TypeScript 提供了基础的类型检查,但有时我们需要更复杂或更灵活的类型检查。这篇博客文章将介绍一组实用函数,用于各种常见的类型检查。

二、代码实现代码语言:javascript代码运行次数:0运行复制
// 禁用一些 ESLint 规则,主要是因为下面使用了 Object.prototype 的方法
// eslint-disable-next-line @typescript-eslint/unbound-method
ct { toString } = Object.prototype

// 判断一个值是否为指定类型
export function is(val: unknown, type: string) {
  return (val) === `[object ${type}]`
}

// 判断一个值是否已定义
export function isDef<T = unknown>(val?: T): val is T {
  return typeof val !== 'undefined'
}

// 判断一个值是否未定义
export function isUnDef<T = unknown>(val?: T): val is T {
  return !isDef(val)
}

// 判断一个值是否是对象
export function isObject(val: any): val is Record<any, any> {
  return val !== null && is(val, 'Object')
}

// 判断一个值是否为空
export function isEmpty<T = unknown>(val: T): val is T {
  if (isArray(val) || isString(val)) return val.length === 0
  if (val instanceof Map || val instanceof Set) return val.size === 0
  if (isObject(val)) return Object.keys(val).length === 0
  return false
}

// 判断一个值是否是日期对象
export function isDate(val: unknown): val is Date {
  return is(val, 'Date')
}

// 判断一个值是否是 null
export function isull(val: unknown): val is null {
  return val === null
}

// 判断一个值是否是 null 或 undefined
export function isullOrUnDef(val: unknown): val is null | undefined {
  return isUnDef(val) || isull(val)
}

// 判断一个值是否是数字
export function isumber(val: unknown): val is number {
  return is(val, 'umber')
}

// 判断一个值是否是 Promise
export function isPromise<T = any>(val: unknown): val is Promise<T> {
  return is(val, 'Promise') && isObject(val) && isFunction() && isFunction()
}

// 判断一个值是否是字符串
export function isString(val: unknown): val is string {
  return is(val, 'String')
}

// 判断一个值是否是函数
export function isFunction(val: unknown): val is Function {
  return typeof val === 'function'
}

// 判断一个值是否是布尔值
export function isBoolean(val: unknown): val is boolean {
  return is(val, 'Boolean')
}

// 判断一个值是否是正则表达式
export function isRegExp(val: unknown): val is RegExp {
  return is(val, 'RegExp')
}

// 判断一个值是否是数组
export function isArray(val: any): val is Array<any> {
  return !!val && Array.isArray(val)
}

// 判断一个值是否是 Window 对象
export function isWindow(val: any): val is Window {
  return typeof window !== 'undefined' && is(val, 'Window')
}

// 判断一个值是否是 DOM 元素
export function isElement(val: unknown): val is Element {
  return isObject(val) && !!
}

// 判断一个值是否是 Map 对象
export function isMap(val: unknown): val is Map<any, any> {
  return is(val, 'Map')
}

// 判断当前环境是否是服务器
export ct isServer = typeof window === 'undefined'

// 判断当前环境是否是客户端
export ct isClient = !isServer

// 判断一个字符串是否是有效的 URL
export function isUrl(path: string): boolean {
  ct reg = /^((https|http|ftp|rtsp|mms):\/\/)(([0-9a-zA-Z_!~*'().&=+$%-]+: )?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1,}.){}[0-9]{1,}|([0-9a-zA-Z_!~*'()-]+.)*([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z].[a-zA-Z]{2,6})(:[0-9]{1,4})?((\/?)|(\/[0-9a-zA-Z_!~*'().;?:@&=+$,%#-]+)+\/?)$/
  return (path)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除exportreturn对象函数typescript

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1195571.html

相关标签:无
上传时间: 2025-07-23 06:32:55
留言与评论(共有 17 条评论)
本站网友 教育产业
4分钟前 发表
unknown)
本站网友 武汉宠物医院
17分钟前 发表
unknown)
本站网友 类人机器人
1分钟前 发表
unknown)
本站网友 散光眼怎么恢复
5分钟前 发表
本站网友 可乐致癌
2分钟前 发表
string)
本站网友 梦到找不到回家的路
22分钟前 发表
any)
本站网友 雅培早产儿奶粉
22分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看exportreturn对象函数typescript
本站网友 时尚购物网
10分钟前 发表
val is Record<any
本站网友 泉州180医院
23分钟前 发表
any)
本站网友 去细纹的眼霜
19分钟前 发表
unknown)
本站网友 卵巢疾病
17分钟前 发表
boolean { ct reg = /^((https|http|ftp|rtsp|mms)
本站网友 杨晓峰
23分钟前 发表
61})?[0-9a-zA-Z].[a-zA-Z]{2
本站网友 老边饺子
12分钟前 发表
val is number { return is(val
本站网友 dns地址
28分钟前 发表
T)
本站网友 视力测试
24分钟前 发表
)?[0-9a-zA-Z_!~*'().&=+$%-]+@)?(([0-9]{1
本站网友 机车是什么意思
5分钟前 发表
val is Record<any