首页 > 其他分享 >TypeScript入门到精通——类型系统基础——类型检查

TypeScript入门到精通——类型系统基础——类型检查

时间:2023-10-02 23:12:52浏览次数:31  
标签:TypeScript 入门 错误 检查 模式 严格 类型

TypeScript类型系统基础——类型检查

  类型检查是检查程序中类型约束是否正确的过程。类型检查既可以在程序编译时进行,静态类型检查;也可以在程序运行时进行,即动态类型检查。TypeScript 支持静态类型检查,JavaScript 支持动态类型检查。

  为了满足不同用户的需求,TypeScript 提供了 两种 静态类型检查模式:

    • 非严格类型检查(默认方式)
    • 严格类型检查

1.1、非严格类型检查

  在非严格模式下,TypeScript 的类型检查相对较为宽松。如果你为变量声明了一个类型,但赋值给了另一种类型,TypeScript 可能会允许这样的操作,而不会抛出错误。此外,非严格模式还允许某些在严格模式下会被认为是错误的操作。 

let num: number = "hello"; // 在非严格模式下,这不会引发错误

2.2、严格模式

  相比之下,严格模式的类型检查更为严格。如果你为变量声明了一个类型,但赋值给了另一种类型,TypeScript 将抛出错误。这有助于在编译阶段捕获更多的类型错误,从而提高代码的质量。

  要启用严格模式,你需要在你的tsconfig.json文件中设置"strict": true。这将会启用一系列严格的类型检查选项,包括noImplicitAnystrictNullChecksstrictFunctionTypesstrictBindCallApply等。

let num: number = "hello"; // 在严格模式下,这会引发错误

  在这个例子中,我们声明了一个类型为number的变量num,但我们试图将一个字符串"hello"赋值给它。在严格模式下,TypeScript 会抛出错误,因为这个赋值操作违反了变量的类型约束。

  使用严格模式可以帮助你编写更可靠、更易于维护的代码,因为它能够在编译阶段捕获更多的类型错误。然而,这也可能需要你投入更多的时间来处理类型错误和进行类型注解。

标签:TypeScript,入门,错误,检查,模式,严格,类型
From: https://www.cnblogs.com/zuoyang/p/17740547.html

相关文章

  • C++ STL快速入门方法
    在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表、队列等,第一次接触C++STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就好了,真是超级方便。最近的项目中也遇到了STL一些容器,所以现在自己好好总结一下STL中......
  • set类型与命令
    转自:https://www.modb.pro/db/717261.常用命令单个set操作:>saddidbsetidb#添加1至多个元素(integer)3>scardidbset#返回set大小(integer)3>smembersidbset#返回set所有元素,是无序的1)"d"2)"i"3)"b">sismemberidbseti......
  • BapBap 新手入门
    这是一款免费游玩的MOBA大逃杀游戏,你要与其他玩家组成三人小队,搜集资源、规划成长路线、与敌人交战,最终夺得桂冠。首先把网址挂出来哈(^人^)BapBap点开网址后,它会先加载,等它加载完后,会进入这样的一个界面(如下图)设置部分看到这个图标没?点开后会出现1个小黑框,自上而......
  • 3-13 字符串类型 字符串类型:str 1.定义格式: 变量 = '内容'
    3-13字符串类型字符串类型:str   1.定义格式:       变量='内容'           打印一行       变量="内容"           打印一行       变量='''内容'''或者三引号           可以通过回车的方式换行,......
  • springMVC类型转换器
    Spring引入通用的数据类型转换系统,其定义了sPI接口和相应的运行时热行类型转换的API,提供无状态,强类型可以在任意类型之间进行类型转换,可以用于任向需要的地方(如SpEL、数据绑定等) 1.配置自定义类型转换服务 2.日期类型转换器 ......
  • 十四天学会C++之第一天(入门和基本语法)
    C++的起源和历史C++诞生于20世纪80年代初,它的创造者是计算机科学家BjarneStroustrup。当时,Stroustrup在贝尔实验室工作,他希望为C语言添加一些功能,以便更好地支持系统开发。这个愿望促使他创建了C++。C++的名字来源于它的基因,其中的"C"代表了C语言,而"++"表示C语言的一个增强版本。......
  • 自定义数据类型和数据类型别名
    自定义数据类型和数据类型别名代码//example.gopackagetestimport"fmt"funcTestFunction(){ fmt.Println("自定义类型") //自定义类型mesType,它是uint16的别名 //注意:虽然mesType是uint16的别名,但是二者仍是不同类型,不能够 //相互赋值和比较,需要进行类型转换 //......
  • Mybatis入门 下
    2.JDBC介绍(了解)2.1介绍通过Mybatis的快速入门,我们明白了,通过Mybatis可以很方便的进行数据库的访问操作。但是大家要明白,其实java语言操作数据库呢,只能通过一种方式:使用sun公司提供的JDBC规范。Mybatis框架,就是对原始的JDBC程序的封装。那到底什么是JDBC呢,接下来,我们就来介......
  • 【C语言入门】第二天
    【例题1】2235.两整数相加-力扣(LeetCode)intsum(intnum1,intnum2){returnnum1+num2;}【例题2】1812.判断国际象棋棋盘中一个格子的颜色-力扣(LeetCode)boolsquareIsWhite(char*coordinates){switch(coordinates[0]){case'a':case'c':case'e......
  • RocketMQ简单入门
    服务端安装及配置docker安装dockerpullrocketmqinc/rocketmq:4.4.0指定版本号是为了后面确定配置文件的路径启动namesrvdockerrun-d-p9876:9876--namerocketmq-nameservice-eMAX_POSSIBLE_HEAP=100000000rocketmqinc/rocketmq:4.4.0shmqnamesrv运行成功执行m......