TS学习笔记(三)

news/2024/10/21 16:55:15

TS语言继承了JS的类型设计,js将值分为8中类型:boolean、string、number、undefined、null、symbol、bigint、object。

注意,上面所有类型的名称都是小写字母,首字母大写的Number、String、Boolean等在js语言都是内置对象,而不是类型名称。

 

bigint与number类型并不兼容

const x:bigint = 123; // 报错
const y:bigint = 3.14; // 报错

 

undefined类型只包含一个值undefined,表示未定义(即还未给出定义,以后可能会有定义)。

null类型也只包含一个值,表示为空(即此处没有值)。null和never的区别是,never表示的是空类型,即此处没有类型,是任何值都可以,而null类型则不行,它的值只能是null。

 

包装对象类型

js里面有一个包装对象的概念。boolean、string、number、bigint、symbol这五种原始类型的值,都有对应的包装对象。包装对象,就是这些值在需要时,会自动产生的对象。

'hello'.charAt(1) // 'e'

 如上,字符串‘hello’可以直接当对象使用,字符串自动转为包装对象。

 

每一个原始类型的值都有包装对象和字面量两种情况。

'hello' // 字面量
new String('hello') // 包装对象

TS对五中原始类型分别提供了大写与小写两种类型。

Boolean和boolean

String和string

Number和number

BigInt和bigInt

Symbol和symbol

其中,大写类型包含包装对象和字面量两种情况,小写类型只包含字面量,不包含包装对象。

const s1:String = 'hello';   // 正确
const s2:String = new String('hello') // 正确

const s3:string = 'hello';    // 正确
const s4:string = new String('hello') // 报错

建议只使用小写类型,不适用大写类型。因为绝大部分使用原始类型的场合,都是使用字面量,不使用包装对象。而且,TS把很多内置方法的参数,定义成小写类型,使用大写类型会报错。

上面示例中,Math.abs()方法的参数类型被定义成小写的number,传入大写的Number类型就会报错。

非常nice,这就是大小写的区别。

 

Object类型

牛逼,竟然所有可以转成对象的值都是Object类型!太强了(注意:这里是大写的Object对象

除了undefined和null不能转成对象,其他任何值都可以赋值给Object类型。

 空对象{}是Object类型的简写形式,所以使用Object常常用空对象代替。

 牛啊牛。

 

小写的object类型代表js里面的狭义对象,即可以用字面量表示的对象,只包含对象、数组和函数,不包括原始类型的值。

 

undefined和null的特殊性

undefined和null既是值,又是类型。

作为值,它们有一个特殊的地方:任何其他类型的变量都可以赋值为undefined或者null.

let age:number = 24;age = null;      // 正确
age = undefined; // 正确

注意,不能直接赋值undefined,会报错

let age:number = undefined  // 报错

这是故意设计成这样的,任何类型的变量都可以赋值为undefined和null,以便跟javascript的行为保持一致。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74245.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

jdk8u20 链子分析

jdk8u20 链子分析 在 JDK7u21 中反序列化漏洞修补方式是在 AnnotationInvocationHandler 类对type属性做了校验,原来的payload就会执行失败。但在8u20中可以用 BeanContextSupport 类对这个修补方式进行绕过,所以说其实 jdk8u20 就是对 jdk7u21 的绕过。 链子分析 可以看到在高…

Meta 最新 SPIRIT-LM:语音文本无缝转换还能懂情绪;字节回应实习生破坏大模型训练:网传损失不实丨 RTE 开发者日报

开发者朋友们大家好:这里是「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑的…

通义灵码实践教程——编码使用实践

点击此处,立即下载通义灵码!https://tongyi.aliyun.com/lingma/ 通义灵码最佳使用实践参考 通义灵码是JetBrains或VSCode集成开发环境(IDE)中嵌入的一款智能开发助手工具,旨在通过人工智能技术简化软件开发过程,提升开发效率。本文将介绍在开发过程中如何深度体验多种辅助…

通义灵码实践教程——单元测试

通义灵码加持的单元测试实践 本文首先讲述了什么是单元测试、单元测试的价值、一个好的单元测试所具备的原则,进而引入如何去编写一个好的单元测试,通义灵码是如何快速生成单元测试的。 什么是单元测试? 单元测试是一种软件测试方法,通过编写代码来验证应用程序中最小的可测…

2024秋软工实践 银河战舰队展示与选题报告

作业所属课程 班级的链接作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13290作业的目标 开发一个基于LLM大模型接口的软件,为传统的软件赋予全新的体验和功能。团队名称 银河战舰团队成员学号-名字 102202129-林伟宏 102202131-林鑫 102202109-木合塔拉提 10…

geojson的下载与展示

下载地址:https://datav.aliyun.com/portal/school/atlas/area_selecto 展示地址:https://l7editor.antv.antgroup.com/

VMware低版本打开高版本虚拟机

前言全局说明VMware低版本打开高版本虚拟机一、说明 环境: Windows 11 家庭版 23H2 22631.3737二、注意修改前,备份虚拟机文件 为了数据安全,最好不要手动修改虚拟机配置信息 最好使用对应版本创建的虚拟机三、版本对应 https://www.cnblogs.com/wutou/p/17712402.html四、修…

【验证码识别专栏】大炮打麻雀 — CLIP 图文多模态模型,人均通杀 AIGC 六、九宫格验证码

前言 近期有粉丝私信,不知道如何训练某讯系点选验证码,之前星球群也有不少粉丝讨论相关问题,为满足粉丝们的需求,本文将对这型验证码的训练进行讲解, 文末可以下载相关的工具,包括 文章配套标注工具 + 文章配套训练代码 + 部分学习数据集(少量类目,仅供学习使用,不设计…