Java求职面试实战:互联网大厂技术场景深度解析

核心内容摘要

告别格式丢失:Luckysheet如何实现行业领先的表格复制粘贴体验
10个必知的Citus分布式表创建技巧与最佳实践:从新手到专家的完整指南

YOLO26改进26:全网首发--C3k2融合自研创新模块C3k2_GhostDynamicConv

前言类型守卫用于获取变量类型信息通常使用在条件块语句中。

类型守卫是返回布尔值的常规函数接受一个类型并告诉 TypeScript 是否可以缩小到更具体的类型。

类型守卫具有唯一的属性可以确保测试的值返回的是布尔值类型。

TypeScript 使用了一些内置的 JavaScript 操作符见下方这些操作符用于确定一个对象是否包含属性。

类型守卫可以让你指导 TypeScript 编译器在特定的上下文中推断出变量的特定类型确保参数的类型与你指定的一致。

类型守卫非常类似于特征检测允许您检测值原型和属性。

类型保护是可执行运行时检查的一种表达式用于确保该类型在一定的范围内。

换句话说类型保护可以保证一个字符串是一个字符串尽管它的值也可以是一个数值。

类型保护与特性检测并不是完全不同其主要思想是尝试检测属性、方法或原型以确定如何处理值。

Typescript 类型守卫主要在类型窄化时使用其实现类型守卫主要有以下 4 种方式typeof类型判断in属性或方法判断instanceof实例判断自定义类型保护的类型谓词typeof该关键字或许您可能在 JavaScript 中见过甚至使用过。

typeof 只能检查基本数据类型不能检查复杂数据类型比如下面这些string | number | bigint | boolean | symbol | undefined | object | function

使用方法很简单如下代码所示// 姓名(字符串类型)letuname:string王佳斌// 判断其类型console.log(typeofuname)//stringin它用于检查对象是否具有特定的属性并使用该属性区分不同的类型。

它通常返回一个布尔值表示该属性是否存在于该对象中。

该操作符用于遍历目标类型的公开属性名如下代码所示// 示例一constobj{name:王佳斌,age:15}console.log(name属性是否存在于obj对象?,nameinobj)//name属性是否存在于obj对象?, true// 示例二typePropertyname|age|phoneNum;typePropertyObject{[keyinProperty]:string;}instanceof它是一个内置类型守卫可用于检查一个值是否是给定构造函数或类的实例。

有了这个类型守卫我们可以测试一个对象或值是否派生自一个类这对于确定实例类型的类型很有用。

instanceof 关键字的基本语法如下objectVariable instanceof ClassName;一个 instanceof 的例子如下代码所示interfaceAccessory{brand:string;}// implements// 实现一个新的类从父类或者接口实现所有的属性和方法同时可以重写属性和方法包含一些新的功能// 一个类通过关键字implements声明自己使用一个或者多个接口。

classNecklaceimplementsAccessory{kind:string;brand:string;constructor(brand:string,kind:string){this.brandbrand;this.kindkind;}}classbraceletimplementsAccessory{brand:string;year:number;constructor(brand:string,year:number){this.brandbrand;this.yearyear;}}constgetRandomAccessory(){returnMath.random()

5?newbracelet(cartier,

:newNecklace(choker,TASAKI);}letAccessorygetRandomAccessory();if(Accessoryinstanceofbracelet){console.log(Accessory.year);}if(AccessoryinstanceofNecklace){console.log(Accessory.brand);}上面的 getRandomAccessory 函数返回一个 Necklace 或 bracelet 对象因为它们都实现了 Accessory 接口。

Necklace 和 bracelet 的构造函数签名是不同的用 instanceof 比较两个构造函数签名可以有效地确定类型。

自定义类型保护的类型谓词这种自定义的方式更加灵活如下代码所示// 验证是否是number类型functionisNumber(x:any):xisnumber{returntypeofxnumber;}// 验证是否是string类型functionisString(x:any):xisstring{returntypeofxstring;}调用函数传入参数any 任意类型如果类型正确则返回 true反之 false。

9.11免费网站nba蘑菇-9.11免费网站nba蘑菇应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123