首页 > 其他分享 >TypeScript中的类型断言

TypeScript中的类型断言

时间:2024-05-23 22:19:31浏览次数:26  
标签:TypeScript 断言 undefined 类型 null string

类型断言(Type Assertion)是指在编程中显式地指定一个值的类型。在 TypeScript 中,类型断言可以让开发者告诉编译器某个值的确切类型,并且在编译时不进行类型检查或者进行更灵活的类型检查。

下面是一个简单的 TypeScript 类型断言的例子:

// 定义一个变量
let someValue: any = "this is a string";

// 使用类型断言将 someValue 断言为 string 类型
let strLength: number = (someValue as string).length;

// 或者使用尖括号语法
let strLength2: number = (<string>someValue).length;

console.log(strLength); // 输出:16
console.log(strLength2); // 输出:16

在上面的例子中,someValue 被声明为 any 类型,但我们知道它实际上是一个字符串。我们使用了类型断言来告诉 TypeScript 编译器,我们将 someValue 视为字符串类型,并且获取了它的长度。在这里,我们使用了两种类型断言的语法:一种是使用 as 关键字,另一种是使用尖括号(<>)语法。

类型断言在需要处理动态数据或者需要与 JavaScript 交互的情况下非常有用,但需要谨慎使用,因为它绕过了 TypeScript 的类型检查。

 

 

 

*****************************************************

在 TypeScript 中,NonNullable 是一个内置的类型工具,用于从给定的类型中排除 null 和 undefined。它接受一个类型作为参数,并返回一个新的类型,该新类型排除了原始类型中的 null 和 undefined

举个例子:

假设有一个变量 myValue,它的类型可能是 string | null | undefined,也就是说它可以是字符串,也可以是 null 或 undefined。如果我们想要确保 myValue 不是 null 或 undefined,我们可以使用 NonNullable 类型工具来排除这两种可能性。

let myValue: string | null | undefined = "Hello World";

// 使用 NonNullable 类型工具来确保 myValue 不是 null 或 undefined
let nonNullableValue: NonNullable<typeof myValue> = myValue;

// 现在 nonNullableValue 的类型就是 string,而不再包括 null 或 undefined

在这个例子中,NonNullable<typeof myValue> 确保了 nonNullableValue 的类型是 string,因为它排除了 myValue 可能的 null 或 undefined。这样可以帮助开发者在编写类型安全的代码时避免意外处理可能的空值。

标签:TypeScript,断言,undefined,类型,null,string
From: https://www.cnblogs.com/ygyy/p/18209479

相关文章

  • 探索常见的 MINE 类型
    在数字世界中,信息的传递不仅仅是文字和图片那么简单。每当我们发送电子邮件、上传文件到网站或浏览网页时,背后都有一种被称为MIME类型的机制在默默工作。MIME(MultipurposeInternetMailExtensions)类型是一种标准,它告诉浏览器或其他接收程序如何处理特定的数据。今天,我们就来......
  • python 基础习题3--数据类型和运算符
    1.  100/4+2*3 运行结果是 ()                    A、10B、81C、31D、50    E、31.02. Python 中的== 代表的是 (  )A、把左边的值赋值给右边;B、把右边的值赋值给左边 ;C、比较左右......
  • ts_01_数据类型
    /***typeScript学习1数据类型*number数字类型*string字符串类型*boolean布尔类型*Array数组*Tuple元组*enum枚举*Any任意类型*void无任何类型*null空类型*undefined未定义类型*......
  • Mysql datetime类型精度问题
    问题描述:汇报表中有2个日期字段,字段名分别为startTime和endTime,都为datetime类型,类型长度默认为0,endTime在保存的格式为:2024-05-2323:59:59.999在测试环境中保存没有出现精度问题,查询后正常显示为2024-05-23 23:59:59,正式环境下日期出现了近位,变为2024-05-2400:00:......
  • SqlSugar : date绑定到XX失败,可以试着换一个类型,或者使用ORM自定义类型实现
    System.Exception:中文提示:date绑定到Machine失败,可以试着换一个类型,或者使用ORM自定义类型实现EnglishMessage:MachinedatebinderroratSqlSugarEntity(IDataRecord)atSqlSugar.IDataReaderEntityBuilder`1.Build(IDataRecorddataRecord)atSqlSugar.......
  • PHP函数 变量类型
    <?phpheader('Content-Type:text/html;charset=utf-8');define('ROOT',$_SERVER['DOCUMENT_ROOT']);includeROOT.'/assets/php/head.php';//类型/***Boolean布尔类型*Integer整型*Float浮点型*String字符串*Numer......
  • zip在不同浏览器的文件类型不一样
    前端上传zip文件,不同浏览器解析的文件类型不一样今日份,遇到一个坑,发现同样是谷歌浏览器,但是上传zip文件的解析文件类型却跟其他电脑的不一样,纳闷了。经调试,发现zip文件firefox:application/octet-streamchrome:application/octet-streamoprea:application/zipIE:app......
  • 精通-TypeScript-全-
    精通TypeScript(全)原文:zh.annas-archive.org/md5/EF6D1933EE7A1583ABD80988FCB79F1E译者:飞龙协议:CCBY-NC-SA4.0前言自2012年底发布以来,TypeScript语言和编译器已经取得了巨大的成功。它迅速在JavaScript开发社区中站稳了脚跟,并不断壮大。包括Adobe、Mozilla和Asa......
  • 二进制数组与基础类型转换
    ///<summary>///工具类:对象与二进制流间的转换///</summary>classByteConvertHelper{///<summary>///将对象转换为byte数组///</summary>///<paramname="obj">被转换对象</param>///......
  • golang 类型断言和 var _ T = expression 写法
     类型断言(TypeAssertion)在Go语言中用于检查一个接口值的具体类型,并从中获取该类型的值。它允许你声明并访问接口变量内部存储的非接口类型的值。有两种主要的类型断言形式:value,ok:=i.(T):这种形式会检查接口i是否持有类型T的值。如果成功,value将是T类型的值,ok......