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

类型断言[as语法 | <> 语法

TypeScript中的类型断言[as语法 | <> 语法]

https://huaweicloud.csdn.net/638f0fbbdacf622b8df8e283.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-107633405-blog-122438115.235^v28^pc_relevant_t0_download&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-107633405-blog-122438115.235^v28^pc_relevant_t0_download&utm_relevant_index=2

  • 要理解好类型断言,其实就深刻理解一句话:你会比TypeScript更了解某个值的详细信息 。

  • 类型断言,断言 断言,顾名思义,我断定怎么怎么样,代入这句话里就是,我断定这个类型是什么。当然这是我们主观上的思维逻辑,程序并不认可,所以我们需要告诉程序:“相信我,我知道自己在干什么” 。

这么干说,大家可能还是理解的不够透彻,我用两个函数举一个例子:


/*** @param d 日期* @param f 想要格式化的字符串*/
function dateFormatter(d: Date | string, f?: string) {const date = new Date(d);if (f) {return `${date.getFullYear()}${f}${date.getMonth() + 1}${f}${date.getDate()}`} else {return new Date(d);}
}

上面这是一个简单的日期格式化的小函数, f 是连接符,如果 f 有值,那么就用 f 来连接日期并返回,如果没有值,则直接返回一个new Date(d) 。

/*** @param d 日期字符串*/
function dealDate(d: string) {return new Date(d).getTime();
}

dealDate()函数接受要给string类型的字符串,返回这个时间的毫秒数。


接下来,我们先调用第一个dateFormatter() 函数,接收返回值,然后传递给dealDate()函数,此时我们一般这么调。

const date = dealDate(dateFormatter('2020-7-28', '/'));

这么调用的问题就在于,我们知道 dateFormatter() 函数因为 f 参数的存在,返回的值肯定是一个string类型。

但是TS不这么认为,在TS的推导中,dateFormatter()函数可能还会返回 Date 类型的值,所以就会给你标红,提示你 dealDate() 函数需要传递字符串类型的值,但是你传递过来的可能是 string 或者 Date,类型不匹配。

但是可以编译通过。

  • 这种时候我们就符合我们前面说的那种情况了,我们可以断定传过去一定是字符串。此时我们可以这么用:

    const date = dealDate(dateFormatter('2020-7-28','/') as string);// 或者这么用
    const a = dealDate(<string>dateFormatter('2020-7-28', '/'));复制

这就是Typescript中的类型断言了。

 

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

相关文章:

  • barret reduction原理详解及硬件优化
  • NLP / LLMs中的Temperature 是什么?
  • c#快速入门~在java基础上,知道C#和JAVA 的不同即可
  • nginx--基本配置
  • R语言中apply系列函数详解
  • 红黑树探险:从理论到实践,一站式掌握C++红黑树
  • CDH6.3.2大数据集群生产环境安装(七)之PHOENIX组件安装
  • 【C++要笑着学】搜索二叉树 (SBTree) | K 模型 | KV 模型
  • 微信小程序开发 | 小程序开发框架
  • 气候系统设计
  • 如何使用Thymeleaf给web项目中的网页渲染显示动态数据?
  • 01 | 电机常用语
  • Leetcode.2601 质数减法运算
  • DP7416国产192K数字音频接收芯片兼容替代CS8416
  • 全球土壤湿度数据获取方法
  • 在proteus中仿真arduino实现矩阵键盘程序
  • 【ROS2指南-5】理解ROS2服务
  • 探索Apache Hudi核心概念 (3) - Compaction
  • 100Wqps异地多活,得物是怎么架构的?
  • 35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了
  • ASP.NET动态Web开发技术第5章
  • 【数据结构与算法篇】时间复杂度与空间复杂度
  • HTTP API接口设计规范
  • 数据一致性校验(pt-table-checksum)
  • Talk预告 | 新加坡国立大学郑奘巍 AAAI‘23 杰出论文:大批量学习算法加速推荐系统训练
  • 肖 sir_就业课__004项目流程(H模型)
  • snipaste 截图工具——可以使图片悬浮在任何软件上,方便对比
  • Docker 快速部署Springboot项目
  • 【LeetCode: 剑指 Offer II 112. 最长递增路径 | 递归 | DFS | 深度优先遍历 | 记忆化缓存表】
  • hive 入门 一般用于正式环境 修改元数据(二)