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

在ts中val is Map是什么意思呢?

最近在学习vue3的源码,顺便也在学习ts,就记录一下自己学习中的困惑吧
在这里插入图片描述

export const isArray = Array.isArray
export const isMap = (val: unknown): val is Map<any, any> =>
  toTypeString(val) === '[object Map]'
export const isSet = (val: unknown): val is Set<any> =>
  toTypeString(val) === '[object Set]'

export const isDate = (val: unknown): val is Date => toTypeString(val) === '[object Date]'
export const isFunction = (val: unknown): val is Function =>
  typeof val === 'function'
export const isString = (val: unknown): val is string => typeof val === 'string'
export const isSymbol = (val: unknown): val is symbol => typeof val === 'symbol'
export const isObject = (val: unknown): val is Record<any, any> =>
  val !== null && typeof val === 'object'

export const isPromise = <T = any>(val: unknown): val is Promise<T> => {
  return isObject(val) && isFunction(val.then) && isFunction(val.catch)
}

is ,官方解释:是一种类型推断表达式的关键字, 通过和函数返回值的比较, 从而"缩小"参数的类型范围一般会用在类型判断的函数中,类似上面这些,isArray 、 isObject等,基本都是以isxxx开头的函数,

export const isString = (val: unknown): val is string => typeof val === 'string'

函数的返回值类型为val is string,isString返回值为true的时候, 参数val就是string类型
返回值类型为什么不能直接写成boolean?

let str: string | null = Math.random() > 0.1 ? 'str' : null
if (isString(str)) {
  str.split()
}

因为如果写成这样,ts无法推测str是否有split方法,str也可能为null,就会报错
在这里插入图片描述

感谢知乎一大哥指点迷经,特此记录该文,点击跳转

相关文章:

  • python实现TCPserver
  • 算法进修Day-33
  • Kotlin协程简介
  • pandas nlargest()的详细用法
  • ubuntu 20.04 passwd 指令不能使用
  • 小程序搭建OA项目首页布局界面
  • Redis 主从复制,哨兵,集群——(3)集群篇
  • 【大数据开发技术】实验06-SequenceFile、元数据操作与MapReduce单词计数
  • logback.xml配置详解
  • 免费的国产数据集成平台推荐
  • 汽车智能制造中的RFID技术在供应链生产管理中的应用
  • C++项目实战——基于多设计模式下的同步异步日志系统-⑩-异步缓冲区类与异步工作器类设计
  • DTI综述(更新中)
  • Eclipse Xtext 实现PLC ST 语言到C的转换
  • 【LeetCode字符串】--14.最长公共前缀
  • 小红书达人怎么对接,博主沟通流程汇总!
  • 切水果游戏开发1
  • 关于电路的输入阻抗与输出阻抗的理解
  • 面试算法32:有效的变位词
  • 【论文阅读】基于卷积神经的端到端无监督变形图像配准
  • 国际著名学者Charles M. Lieber全职受聘清华深圳国际研究生院
  • 杭州挂牌临平区两宗住宅用地,起始总价约11.02亿元
  • 中国证券监督管理委员会党委委员、副主席王建军接受审查调查
  • 铁路迎来节前出行高峰,今日全国铁路预计发送旅客1870万人次
  • 零食连锁鸣鸣很忙递表港交所:去年营收393亿元,门店超1.4万家,净利润率2.1%
  • 外交部回应涉长江和记出售巴拿马运河港口交易:望有关各方审慎行事,充分沟通