typescript 解决变量多类型访问属性报错--工作随记
一个变量类型允许是多个类型,如果访问某个类型的属性,编辑器会直接提示错误
比如 变量 tuple 可能为string 或 number 类型,如果直接访问tuple.toFixed
const mixedTupleTypeArray: (string|number)[] = ['hello', 2333]
const tuple = mixedTupleTypeArray[0];
// tuple 类型有可能是 string 或 number
// 编辑器会提示错误,Property 'toFixed' does not exist on type 'string | number'
if(tuple.toFixed){
}
即使加?操作符也不行,还是会提示错误
tuple?.toFixed
解决方法: typeof 判断类型后再访问,如下所示
if(typeof tuple === 'number'){
tuple.toFixed
}
if(typeof tuple === 'string'){
tuple.substring
}
如果是 class 类相关的继承模式呢?
比如
class Animal{
}
class Dog extends Animal{
constructor(){
super();
}
speak(){
console.log('汪')
}
}
const animal = new Animal();
const dog = new Dog();
const mixedClassTypeArray: (Animal|Dog)[] = [animal, dog];
const classItem = mixedClassTypeArray[0]
// 报错 Property 'speak' does not exist on type 'Animal | Dog'.
if(classItem.speak){
}
直接使用 classItem.speak 编辑器提示错误 Property 'speak' does not exist on type 'Animal | Dog'
两种写法可以解决
方法一
用 as 强行告诉编译器,classItem 属于 Dog 类
if((classItem as Dog)?.speak){
}
方法二
用 instanceof 判断实例化自哪里
if(classItem instanceof Dog){
classItem.speak
}
转载入注明博客园池中物 willian12345@126.com sheldon.wang
github: https://github.com/willian12345
typescript 解决变量多类型访问属性报错--工作随记的更多相关文章
- 打开sa属性报错
--如果打开sa属性报错如下:无法显示请求的对话框.属性IsLocked不可用于“登录名sa".该对象可能没有此属性,也可能是访问权限不足而无法检索 --解决办法:首先用windows登录, ...
- hue中访问impala报错
hue中访问impala报错:Could not connect to node03:21050 原因:impala服务未启动. 解决方法:在3个节点上都启动impala: 主节点node03启动以下 ...
- 痞子衡嵌入式:一个奇怪的Keil MDK下变量链接强制对齐报错问题(--legacyalign)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是一个奇怪的Keil MDK下变量链接强制对齐报错问题. 痞子衡最近一直在参与恩智浦SBL项目(就是一个适用LPC和i.MXRT的完整OT ...
- 访问nginx报错502日志:failed (13: Permission denied) while connecting to upstream
1.错误问题 nginx启动成功,但是访问nginx报错502.检查后台项目,使用IP+端口可以正常访问项目的,这说明项目启动成功了.那就是nginx的问题.检查了nginx.conf文件发现配置的反 ...
- 解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- [转]解决IIS下UTF-8文件报错乱码的问题
找了两天才找到解决办法…….晕晕晕...用第二种方法解决了. 网上找到的方法都没有写这一条 If objASPError.ASPDescription > "" Then 后 ...
- 【原创】大叔经验分享(49)hue访问hdfs报错/hue访问oozie editor页面卡住
hue中使用hue用户(hue admin)访问hdfs报错: Cannot access: /. Note: you are a Hue admin but not a HDFS superuser ...
- Eclipse和MyEclipse使用技巧--解决MyEclipse中的js报错的小方法
今天,下了个模版,但是导进去的时候发现js会报错.看了下其他都没有错误.而有一个js报错误,请原谅我有点红色强迫症,不能留一点红色 . 错误如下:Syntax error on token " ...
- 解决springMVC文件上传报错: The current request is not a multipart request
转自:https://blog.csdn.net/HaHa_Sir/article/details/79131607 解决springMVC文件上传报错: The current request is ...
- 01-路由跳转 安装less this.$router.replace(path) 解决vue/cli3.0语法报错问题
2==解决vue2.0里面控制台包的一些语法错误. https://www.jianshu.com/p/5e0a1541418b 在build==>webpack.base.conf.j下注释掉 ...
随机推荐
- CSS文本,字体设置与元素边框,阴影,显示模式
什么是元素的显示模式 网页中的标签很多,在不同的地方使用不同类型的标签. 元素显示模式就是标签以什么方式进行显示.如:div自己占一行,span一行可以放多个. HTML元素一般分为块元素和行内元素两 ...
- 疾速7600MT/s!KELVV科赋CRAS V RGB DDR5内存图赏
12月18日消息,KLEVV科赋日前推出新款大容量DDR5内存套装,满足游戏玩家.内容创作者和高端PC爱好者的需求. 现在,KLEVV科赋CRAS V RGB内存套装已经来到我们评测室,下面为大家带来 ...
- linux 后台运行进程:& , nohup
目录 后台执行 & nohup 查看后台运行的命令 jobs ps 关闭当前后台运行的程序 kill 前后台进程的切换与控制 ctrl + z 命令 fg 命令 bg 命令 思考 问题1-为什 ...
- Python 元组详细使用
1. 元组 元组和列表类似,但属于不可变序列,元组一旦创建,用任何方法都不可修改其元素. 元组的定义方式和列表相同,但定义时所有元素是放在一对圆括号"()"中,而不是方括号中. 1 ...
- .NET Core开发实战(第2课:内容综述)--学习笔记
02 | 内容综述 课程目标 掌握 .NET Core 微服务架构的最佳实践 成长为一个具备良好架构设计能力的架构师 课程内容 第一部分 .NET Core 的必备知识 第二部分 .NET Core ...
- 初次尝试GPU Driver —— 大范围植被渲染之着色
初次尝试GPU Driver -- 大范围植被渲染之着色 在<初次尝试GPU Driven -- 大范围植被渲染>中实现了草地分布,本文实现草的着色. 本文分四个部分: 生成网格 随机调整 ...
- Js中数组空位问题
Js中数组空位问题 JavaScript中数组空位指的是数组中的empty,其表示的是在该位置没有任何值,而且empty是区别于undefined的,同样empty也不属于Js的任何数据类型,并且在J ...
- vmware之NAT模式配置
题外话之前的题外话,本文迁移自别的社区,三年前大学实习时写下本文,过了几年再回过头来看,虽然讲得浅显,作为入门笔记也勉强合格. ---------------------------------- ...
- 4.1k Star!全面的C#/.NET/.NET Core学习、工作、面试指南
C#/.NET/.NET Core 学习.工作.面试指南 让现在的自己不再迷茫 . GitHub 开源地址:https://github.com/YSGStudyHards/DotNetGuide D ...
- vscode自定义运行和调试创建launch.json文件及项目独立配置文件
1.创建lauch.json文件 2.然后在项目目录中会自动创建.vscode的目录 3.在.vscode目录下创建settings.json项目独立配置文件 4.在settings.json中写入 ...