首页 > 其他分享 >TS学习笔记(三)

TS学习笔记(三)

时间:2024-10-21 16:43:06浏览次数:7  
标签:undefined 对象 TS 笔记 学习 报错 类型 null hello

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的行为保持一致。

 

 

标签:undefined,对象,TS,笔记,学习,报错,类型,null,hello
From: https://www.cnblogs.com/yaoyu7/p/18446148

相关文章

  • 花8000元去培训机构学习网络安全值得吗,学成后就业前景如何?
       我就是从培训机构学的网络安全,线下五六个月,当时学费不到一万,目前已成功入行。所以,只要你下决心要入这一行,过程中能好好学,那这8000就花得值~因为只要学得好,工作两个多月就能赚回学费,而且大部分培训班也会有就业支持,比如老师给推荐或者定期的招聘会…先说一下我自己,很喜......
  • 入门网络安全工程师要学习哪些内容
        大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网络安全工程师需要学什么?知了堂小编总结出以下要点。网络安全工程师是一个概称,学习的东西很多,具体学什么看自己以后的职业定位。如果你以后想成......
  • 网络安全学习路线图(2024版详解)
       近期,大家在网上对于网络安全讨论比较多,想要学习的人也不少,但是需要学习哪些内容,按照什么顺序去学习呢?其实我们已经出国多版本的网络安全学习路线图,一直以来效果也比较不错,本次我们针对市场需求,整理了一套系统的网络安全学习路线图,供大家学习参考。希望大家按照路线图进......
  • 用友NC系统word.docx信息泄露漏洞复现学习
    用友NC系统word.docx存在信息泄露漏洞用友NC系统word.docx存在信息泄露漏洞,disp=/WEB-INF/web.xml。其他的自己设置fofaapp="用友-UFIDA-NC"pocGET/portal/docctr/open/word.docx?disp=/WEB-INF/web.xmlHTTP/1.1Accept:text/html,application/xhtml+xml,application/xml......
  • 【论文阅读笔记】An Image is Worth 1/2 Tokens After Layer 2: Plug-and-Play Infere
    论文地址:https://arxiv.org/pdf/2403.06764代码地址:https://github.com/pkunlp-icler/FastV目录IntroductionInefficientVisualAttentioninVLLMsPreliminaries两种分数结果分析FastVOverviewRe-rankandFilteringmodule(core)ThoughtIntroduction现象(问题):大多数LVL......
  • IIC通讯协议笔记
    iic通讯协议片上外设iic主发送器主发送器通讯过程发送开始位后等待EVT5,发送从机(slave)地址等待EVT6和发送要写入从机的寄存器等待EVT8,发送数据等待EVT8_2片上外设主接收器发送过程接收过程......
  • 华为云软件开发生产线(CodeArts)9月新功能特性
    华为云软件开发生产线CodeArts是一站式、全流程、安全可信的云原生DevSecOps平台,覆盖需求、开发、测试、部署、运维等软件交付全生命周期环节,为开发者打造全云化研发体验。华为云CodeArts目前已上线28款研发工具,服务于300多万开发者,应用于10多个行业,覆盖开发全场景。2024年9......
  • Vue学习之路10----生命周期
    (以下图片来自官网)<template><div>{{num}}</div><button@click="num++">add</button></template><scriptsetupname="App">import{ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBefore......
  • Leetcode 160. Intersection of Two Linked Lists
    Leetcode160.IntersectionofTwoLinkedLists错解一开始没看清题目的要求中,提到最后表结构不能变,想到的做法是:先遍历A,把A翻转,然后B就可以走到headA判断出它们是否相交,但是即便如此,也不能判断出相交点在哪里,而且还会破坏链表的结构,所以这种写法不行。正解classSolution{......
  • 如何使用WebSockets
    使用WebSockets你需要遵循以下步骤:一、理解WebSockets与传统HTTP的差异;二、选择合适的库和框架;三、建立WebSocket服务器;四、构建WebSocket客户端;五、确保连接的安全性。在开始使用WebSockets前,我们首先需要明白其背后的设计理念和技术特点。一、理解WebSockets与传统HTTP的差......