TypeScript类型判断typeof,instanceof,以及as断言

TypeScript 类型守卫 (Type Guard) 完全详解:typeof、instanceof、自定义 阅读详情
class A {
}
class AChild extends A {
    public SpecialLog(): void {
        console.log("specialLog");
    }
}
class B {
}
        console.log("1 基本类型判断------string、number、object、null、undefined------->");
        var str: string = "hello";
        var b1: number;
        var b2: number = 3;
        var c1: any;
        var c2: any = 6;
        var c3: any = "6";
        var d1: Array<number>;
        var d2: Array<number> = [1, 2, 34];
        var e = null;
        console.log(typeof str === 'string')
        console.log(typeof str === 'number')
        console.log(typeof b1)
        console.log(typeof b2)
        console.log(typeof c1)
        console.log(typeof c2)
        console.log(typeof c3)
        console.log(typeof d1)
        console.log(typeof d2)
        console.log(typeof e)



        console.log("2  引用类型判断-------接口或类类型,Array和RegExp------->")
        let a: A = new A();
        let aChild: AChild = new AChild();
        a = aChild;
        console.log(a instanceof A);
        console.log(aChild instanceof A);
        console.log(a instanceof B);

        if (a instanceof AChild) { //instanceof的类型转换功能
            a.SpecialLog();
        }
        console.log([] instanceof Array);
        console.log({} instanceof Object);
        console.log(/\d/ instanceof RegExp);


        console.log("3 断言-----------即as和<>的用法------>")
        let p1: number = 2345;
        let p2: any = 643;
        let p3: any = "643";
        // console.log("p1.length:"+p1.length+",p2.length:"+p2.length);//编译器直接报错
        // console.log("p1.length:" + (p1 as String).length + ",p2.length:" + (p2 as String).length);//因为p1确定是number类型,这里强转报错
        console.log("p2.length:" + p2.length);
        console.log("p2.length:" + (p2 as String).length);
        console.log("p3.length:" + p3.length);
        console.log("p3.length:" + (p3 as String).length);
        console.log("1:" + (a as B));
        console.log("2:" + (a as AChild));
        console.log("3:" + (a as AChild).SpecialLog());
        console.log("4:" + (<AChild>a).SpecialLog());
        console.log("-------->end");       

结果:
在这里插入图片描述
断言的更多细节可以参考该文档

理解 TypeScript “as” 关键字 在 TypeScript 中,“as”关键字用于类型断言,它允许我们手动设置变量的数据类型并防止编译器自行推断它。类型断言通常用于将任何类型视为特定类型,例如数字或字符串。虽然类型断言很有用,但使用它时一定要小心,因为它可能会禁用类型检查,如果使用不当会导致错误。“as”关键字是在 TypeScript 中执行类型断言的一种方法。在 TypeScript 中,“as”关键字用于创建类型断言。这允许将对象视为与编译器最初推断的类型不同的类型。 阅读详情

相关推荐

【TypeScript】TS类型守卫(六)

类型守卫主要是用来**判断未知类型是不是所需要的类型**。类型守卫主要包括四种方式:in,typeof, instanceof,自定义类型

编码世界 1万+

typescript基础之typeof与instanceOf的区别

• typeof 运算符返回一个值或变量的基本类型,例如 "string","number","boolean","function" 等。它可以用在表达式中,也可以用在类型上下文中,即用来定义类型别名或类型注解。在类型上下文中,typeof 运算符可以获取一个值或变量的最具体的类型,而不是基本类型。它只能用在表达式中,不能用在类型上下文中。• 使用 typeof 来获取或检查简单的内置类型,例如字符串,数字,布尔值等。• 使用 instanceof 来检查自定义的类型,例如类,接口等。

hhbbeijing的专栏 1515

创龙 瑞芯微 RK3588 国产工业开发板—Qt交叉编译环境搭建与GPU图形渲染实战

本文详细介绍了在创龙RK3588国产工业开发板上搭建Qt交叉编译环境并利用GPU进行图形渲染的完整实战流程。文章从环境准备入手,讲解了交叉编译工具链的配置,并提供了命令行与Qt Creator两种编译方法。通过部署运行和自启动设置,确保程序在板卡上稳定运行。最后,通过OpenGL案例实战,展示了如何调用RK3588的GPU进行高效图形渲染,释放其图形处理潜力,适用于工业HMI、智能终端等高要求图形界面开发。

weixin_28278377的博客 449

TypeScript----高级类型(第一篇)

一、交叉类型 交叉类型是将多个类型合并为一个类型。这让我们可以把现有的多种类型叠加到一起成为一种类型,它包含所有类型的特性。 我们大多是在混入或其它不适合典型面向对象模型的地方看到交叉类型的使用。在JavaScript里发生这种情况的场合很多!,举例: function extend<T,U>(first:T,second:U):T & U{ let result = <T & U>{}; for (let id in first) { ..

我睡觉的时候不困 1600

模电仿真软件:MultSim14.3下载与安装

在setup文件夹中,找到【Install.exe】文件,然后右键单击选择【以管理员身份运行】(这一步超级重要,否则可能会出现权限不足导致安装失败)!解压完成后,打开解压出来的文件夹,找到并进入【setup】文件夹(这一步很重要,不要进错文件夹)。4、在弹出的安装向导中,仔细阅读许可协议后,选择【我接受】,然后点击【下一步】继续安装过程。首先我们需要将下载好的安装包解压到本地文件夹,确保有足够的磁盘空间(建议至少5GB以上)!按照安装向导的提示,点击【下一步】继续(保持默认设置即可,除非你有特殊需求)

weixin_44264994的博客 2310

PyTorch GPU版本安装避坑指南:解决RuntimeError: No CUDA GPUs are available报错

本文详细解析了PyTorch GPU版本安装过程中常见的`RuntimeError: No CUDA GPUs are available`报错问题,从硬件驱动检查、CUDA Toolkit与cuDNN安装到PyTorch GPU版本的正确配置,提供了全面的避坑指南和实战验证方法,帮助开发者高效搭建深度学习开发环境。

r2s3t4的博客 296

【TypeScript】从零开始玩转TypeScript - TypeScript中的高级类型

前言 小伙伴们大家好。今天继续来学习typescript。

lixiaosenlin的专栏 2196

从零构建:Trinamic API在STM32上的深度移植与TMC-IDE通信实战

本文详细介绍了如何从零开始在STM32平台上深度移植Trinamic API,并实现与TMC-IDE工具的稳定通信。内容涵盖SPI底层驱动定制、寄存器配置、高级功能实现及调试技巧,重点解析了TMC5160芯片的集成实践,帮助开发者构建可靠的嵌入式运动控制系统。

w1x2y3的博客 254

TypeScript 强制类型转换和类型判断 typeof,instanceof

作为一名AS3老手,写TS也是手到擒来的事情,不过AS和TS还是有些习惯不太一样,比如类型判断这块 AS3中只需要一个 ‘as’ ‘is’关键字就可以了 TS则不然,它的类型判断比较特殊,下面的方法体中进行了具体说明typeJudge() { //typeof 用来判断变量类型 var s: string = 'egret'; var isString: boolean

gzylongxingtianxia的专栏 6万+

全网最全的AItium Designer 16下载资源与安装步骤

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。...

WQ的博客 1万+

大数据运营可视化:Tableau+PowerBI数据看板搭建教程

当企业数据量从“GB级”跃升到“TB级”,运营人员面临的最大挑战不再是“如何收集数据”,而是“如何让数据说话”。数据看板作为“运营指挥中心的仪表盘”,能将零散的用户行为、业务指标、流量趋势浓缩成可快速解读的视觉语言。本文结合Tableau(自由探索的“数据瑞士军刀”)与PowerBI(微软生态的“组合家具”)两大工具,从需求分析→数据准备→指标设计→视图搭建→ dashboard 组合,一步步教你搭建符合业务逻辑的运营看板。

AI智能探索者的博客 1362

Typescript: 类型保护之类型断言、类型谓词

在使用 ts 过程中,对于新手最怕出现 ts 告警,其中很多是因为类型保护导致的,本文梳理了关于类型保护的几种解法,包括类型断言as,类型谓词is,以及es本身的关键字,如in,typeof等。

weixin_41952131的博客 525

在树莓派4B上基于NCNN框架部署YOLOv8的实战教程

摘要:本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的完整流程。从PyTorch模型转换为NCNN格式,到树莓派环境配置(OpenCV和NCNN编译),再到C++代码实现与优化,涵盖模型加载、推理和绘图等核心功能。测试结果显示,树莓派4B上可实现约2 FPS的检测速度,Windows平台达6~7 FPS。文章还提供了量化模型、多线程优化等实用建议,并附常见问题解答,为边缘设备部署轻量化目标检测提供了可行方案。(149字)

m0_64661770的博客 595

TypeScript 类型断言与类型守卫

在 TypeScript 中,类型断言是一种方式,它允许开发者手动告知编译器一个值的具体类型。虽然 TypeScript 本身会通过类型推断等机制去确定变量的类型,但在某些情况下,编译器可能无法准确判断,或者开发者基于对代码逻辑的了解,知道某个值实际的类型与编译器推断的不一致,此时就可以使用类型断言来明确指定类型,帮助编译器更好地进行类型检查,避免不必要的编译错误。

2401_83367969的博客 311

黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

黑猫奥利奥的博客 3236

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TypeScript类型守卫的几种方式

可以通过自己实现类型守卫函数来将类型收敛性。类型守卫比 typeof 更加强大了。// 自定义类型守卫函数 function isFish(pet : Fish | Bird) : pet is Fish {// pet类型被收敛到了类型 Fish 上 pet . swim();} else {}

Ranye的博客 920

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

2.typescript类型的高级用法(上)

typescript类型高级用法

m0_55967670的博客 231

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

1. TS学习笔记

先写两个接口Teacher、Student,然后将这两个接口进行联合声明,使用in来判断属性是否在传递的参数中,然后分别作输出。缺点:用 in 关键字缩小数据类型必须有一个独特的属性作为判别标准,否则不能用 in 关键字TS中有一个关键字is可以判断变量是否属于某种类型。写法:a is b,意思是a是b类型,a是函数参数,也可以是this关键字,this关键字一般用在累中判断,b可以是接口类型,b也可以是number、string等其他合法的TS类型。

m0_74269644的博客 91

TypeScript类型守卫(Type Guard)(类型保护)(一种在运行时检查变量类型机制,在语句的块级作用域内缩小变量的类型)类型断言as关键字、in运算符、typeof、instanceof

TypeScript类型守卫(Type Guard)是一种在运行时检查变量类型机制,它允许开发者在代码中对不同类型的变量进行区分,从而实现更细粒度的代码控制。类型守卫是TypeScript中处理联合类型(Union Types)和类型不确定性的重要工具。

Dontla的博客 1223

一文带你了解TypeScript类型断言与类型保护

目录本文概览:1. 类型断言2. 双重断言3. 类型保护(1)自定义类型保护(2)typeof 类型保护(3)instanceof 类型保护 本文概览: 1. 类型断言 TypeScrip的类型系统很强大,但是有时它是不如我们更了解一个值的类型。这时,我们更希望TypeScript不要帮我们进行类型检查,而是让我们自己来判断,则就用到了类型断言。 使用类型断言可以手动指定一个值的类型。类型断言像是一种类型转换,它把某个值强行指定为特定类型: const getLength = target => {

公众号:前端充电宝 1217

TypeScript 类型断言&类型保护

目录类型断言含义语法一:尖括号语法二:as与类型转换的区别类型保护功能实现一:typeof实现二: instanceof实现三: in实现四:字面量类型保护实现五:自定义的类型保护 & 类型谓词参考资料 类型断言 含义 TypeScript 允许你覆盖它的推断,并且能以你任何你想要的方式分析它,这种机制被称为「类型断言」。 语法一:尖括号 let foo: any; let bar = <string>foo; // 现在 bar 的类型是 'string' 语法二:as let fo

qq_42258669的博客 523

鸿蒙中,类型检查typeof 和 instanceof 操作符

摘要: 鸿蒙应用开发中,typeof和instanceof是类型检查的核心操作符,但适用场景不同。typeof用于检测基本数据类型(如"number"、"string"),但对对象仅返回"object";instanceof则验证对象是否为特定类的实例(如数组、自定义组件)。关键区别在于:typeof针对原始类型,instanceof适用于引用类型。鸿蒙开发中建议结合两者实现类型守卫,例如判断API返回数据或组件类型,同时注意typeof null

梦想不只是梦与想的博客 1508

TypeScript类型断言与类型守卫:处理类型的不确定性

本文深入探讨TypeScript中类型断言和类型守卫的核心概念与应用。类型断言通过as语法或尖括号语法,在编译阶段手动指定类型,适用于处理DOM元素、API响应等场景;类型守卫则通过typeof、instanceof等运行时检查实现类型收窄,更为安全。文章对比了两者的使用场景与限制,强调优先使用类型守卫,并介绍了自定义类型守卫的创建方法。同时警示过度使用非空断言(!)的风险,提倡采用可选链等更安全的替代方案。最后总结了实际开发中的最佳实践,帮助开发者在类型安全与灵活性间取得平衡。

大家好,我是张小白! 1033

TypeScript 类型断言和类型守卫

TypeScript 类型断言和类型守卫学习

m0_49424368的博客 1417

TS类型断言和类型守卫

在 TypeScript 开发中,我们经常会遇到编译器无法准确推断出变量具体类型,或者我们需要在复杂的联合类型中精确锁定某一个类型的场景。为了解决这些问题,TypeScript 提供了两大利器:“类型断言”和“类型守卫”。为了解决上面的报错问题,我们需要把 Object.prototype.toString.call()封装进一个自定义类型守卫中。通过is关键字明确告诉 TypeScript 编译器:“只要这个函数返回 true,传入的参数就绝对是这个具体的类型”。

2511_94359082的博客 451

TypeScript数据类型判断:深入了解类型检查

在TypeScript中,我们可以使用接口(interface)和类型别名(type alias)来定义自定义类型。这些自定义类型可以用于创建复杂的数据结构,并确保数据的一致性。age: 30,在这个示例中,我们定义了一个User接口,它规定了一个用户对象的结构。然后,我们可以使用这个接口来注解user变量,确保它符合预期的数据类型。

村头得码农 2055
上一篇: [CocosCreator]射线检测
下一篇: TypeScript三个等号和两个等号的区别
iningwei
博客等级 码龄10年 1999粉丝 327原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值