从零开始学习typescript——数据类型

数据类型

以前我们用js编写代码的时候,都是直接使用let、var、const 来定义数据类型;js会在运行时来确定数据类型,但是在ts中,可以在声明时就可以指定数据类型。如果你学过其他编程语言,比如c、java就能更好的理解了。和c语言一样,在指定好数据类型之后,变量就无法用其他类型的值进行赋值。

undefined

表示缺少初始值;只包含了一个值,就是undefined;我们可以直接在声明时显示定义,代码如下:

let val:undefined;
val= undefined

当你变量声明后没有赋值,该变量的值为undefined

let val;

还有一种时,开发时候,最长使用的json对象;如果没有给对象的某个属性赋值,该属性值为undefined

let obj={
id:1
}
obj["name"]

null

null 表示无值,表示此处不应该有值;

let num:number = null;

NaN

即表示Not a Number,表示这个值虽然属于数值类型,但是不是一个正确的数;
表示一个本来要返回数值的操作数未返回数值的情况;一般出现的地方可能是在一个类型转换

let re = parseInt('sdg454')
console.log(re); //NaN

性质
它与任何其他值(包括它自己)都不想等。即NaN != NaN
使用isNaN()函数可以检查一个值是否是NaN

布尔类型

布尔类型表示逻辑上的 真和假;这个类型的变量只有两个值: true 和false;
真假一般带有判断意味,所以布尔类型多数用于逻辑运算中;

  • 数值类型
    数值类型包括了整数、小数(浮点数);使用的关键字:number
let num:number= 1
let num1:number =9.9
let num2:number = -9

除了我们所常知的 十进制数,也可以用数值类型表示二进制、八进制、十六进制数

let hexNum:number = 0xf0e1; //16进制;以0x开头
let binNum:number = 0b1011; //二进制; 以0b开头
let octNum:number = 0o451;  //八进制;以0o开头

数值类型能表示的最大范围
在ts 中 数值类型使用的 双精度64位浮点数格式
在这里插入图片描述
第一位是符号位;11位表示指数位;52位表示小数位

长整型

前面的数值类型能表示的范围是-2^53 ~ 2^53,但是超过这个范围就无法表示;为了解决这个问题,ts 引入了长整型,可以用它表示任意大小的整数。

关键字: bigint

声明

let bigNum:bigint = 1234n;

字符串类型

字符串类型变量用于存放文本数据。可以使用双引号或单引号 来表示字符串类型变量。

let str:string = 'good'
let str:string = "good"

但是有点开发经验的,都知道,很多时候,文本内容可能会存在跨行;如果还使用 双引号 或单引号 那么就要使用 + 号进行拼接; 虽然可以完成换行工作,但是后期维护大,容易缺少+,代码界面不整洁;ts 提供了支持跨行的方式;使用反引号 来表示字符串;

let str:string ='gsdgd'+'gsdgd'+'gfdgfd'
let str:string = `
good 
study
`
  • 枚举类型
    有时候开发的时候,我们需要只允许从一个范围内取值;或者是程序需要根据不同的取值来执行不同的代码。如果直接使用值来做判断,会造成代码的可读性会很差,后期改动代码的时候需要修改的地方过多。ts中就提供了 枚举类型 ;
  1. 数值枚举
    这个是默认的枚举类型;
enum color{red,yellow,blue
}let c:color = color.red
console.log(c); //0

如果你运行上面的代码,你会发现输入的结果是0,可以我们定义的是red,则是因为在ts中枚举类型默认是按照数字索引来进行枚举的,从0开始自动递增。如果你不要想让枚举类型从0开始,也可以自定义

enum color{
red=2,
yellow=99,
blue=101
}
let c:color = color.red
console.log(c); //2
  1. 字符串枚举
    如果不想用数字来表示枚举,那么我们可以用字符串枚举类型来定义枚举
 enum color{red='red',yellow='yellow',blue='blue'
}
  1. 常量枚举
    在使用普通的数值枚举或字符串枚举,ts在编译成js的时候会产生比较多的代码来支持。这时候可以使用const 让普通枚举类型变成常量枚举
const enum color{
red='red',
yellow='yellow',
blue='blue'
}
  1. symbol
    symbol是ECMAScript2015 中新增语法;你可以理解symbol是GUID的生成器。每一次生命的时候生成的值都是唯一的

  2. 注释
    注释其实不算是数据类型,但是在开发过程中,注释有很大的作用;他能够让自己、别的开发能够了解代码为什么要这么做;

    • 单行注释
      使用// ,不允许换行
    • 多行注释
      使用/**/,运行换行
    • 区域注释
      使用//#region …//#endregion

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5原生视频播放器组件video的videocontrolslist属性详解

HTML5提供了内置的视频播放控件,其中videocontrolslist是其中一个很有用的属性。videocontrolslist属性可以用于告诉浏览器在视频播放过程中应该显示哪些默认的用户界面控件。下面我们将从几个方面来介绍videocontrolslist的详细使用。 一、启用videocontrolslist videocont…

格式工厂——万能格式转换器

很多时候,大家从网络上下载的文件不一定是自己想要的类型,比如flv等视频文件,而强行改文件后缀名只会造成文件格式错误,无法打开;而很多文件的格式并不能轻易转换,且很多渠道都需要收费。今天介绍的这款For…

实力登榜!迅镭激光荣膺“江苏省瞪羚企业”称号!

11月24日,江苏省生产力促进中心发布“江苏省独角兽企业和瞪羚企业评估结果”,迅镭激光凭借在技术研发、产品创新、市场服务等方面的取得的领先成就,荣膺“江苏省瞪羚企业”称号! “瞪羚企业”是指以科技创新或商业模式创新为支撑,…

一、Gradle 手动创建一个项目

文章目录 Gradle 介绍Gradle Wrapper Gradle 使用手动安装 Gradle初始化 Gradle 介绍 Gradle 是一个快速的、可信的、适应性强的自动化构建工具,它是开源的。它使用优雅的并且可扩展的描述性语言。其他的介绍在官网可以了解。 Gradle Wrapper 官方建议使用 Gradl…

c语言:模拟实现各种字符串函数

strlen函数: 功能:获取到\0之前的的字符个数。 代码模拟实现函数: //strlen //这里用了递归法, //如abc,1bc,然后11c,接着111,最后读取到\0,1110,得到结果3…

Day40力扣打卡

打卡记录 包子凑数(裴蜀定理 DP) 根据裴蜀定理,存在 c gcd(a, b) 使不定方程ax by c满足条件,如果gcd(a, b) 1即a与b互素的情况下,就会 ax by 1,由于为1可以构造后面的无穷数字,故得到结…

深入了解Java8新特性-日期时间API之ZonedDateTime类

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概19000多字,预计阅读时间长需要10分钟以上。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&…

离散系统的频域分析(数字信号处理实验2-1)

创建具有15 Hz和40 Hz分量频率的信号,叠加两个信号形成混合信号x,使用fft命令绘制x的频域图,标注频率为横坐标,平均能量为纵坐标。 文章目录 一.题目二.实验目的三.实验仪器四.实验原理1.MATLAB使用函数2.离散傅里叶变换(DFT)实验…

Python 装饰器与偏函数

目录 装饰器 概念 简单的装饰器 复杂点的装饰器 通用装饰器 定义通用装饰器 使用装饰器 偏函数 引入类库 应用 总结 装饰器 概念 装饰器就是个闭包;把一个函数当做参数,返回一个修改过功能的函数; 本质上是一个返回函数的函数。…

Mysql单表查询练习

一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker (部门号 int(11) NOT NULL,职工号 int(11) NOT NULL,工作时间 date NOT NULL,工资 float(8,2) NOT NULL,政治面貌 varchar(10…

jdk动态代理和CGLIBE代理

静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。 使用jdk的反射机制,创建对象的能力&…

ck 配置 clickhouse-jdbc-bridge

背景 ck可以用过clickhouse-jdbc-bridge技术来直接访问各数据库,包括oracle,oracle也可以用jdbc,odbc没调研过 规划 jdbc-bridge是面向客户端的技术,也就是说,那个节点有客户端,哪个节点就需要&#xff…

C语言——计算Fibonacci数列

方式一 for循环 (20位) #define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int n;int a[20]{1,1};for ( n 1; n <20; n){a[n]a[n-2]a[n-1];}for ( n 0; n < 20; n){if(n%50)printf("\n");printf("%12d ",a[n]);}return 0; …

nodejs+vue+mysql皮具行李箱包包网上商城购物网站

本系统可分为两个大的模块&#xff0c;即前台用户模块和后台管理员模块&#xff0c;前台用户模块用户可以进行浏览查询皮具的各种信息&#xff0c;添加购物车&#xff0c;下订单等各种操作。后台管理员模块管理员可以进行皮具的处理&#xff0c;还有处理订单&#xff0c;皮具分…

【shell】文本三剑客之sed详解

目录 一、sed简介&#xff08;行编辑器&#xff09; 二、基本用法 三、sed脚本格式&#xff08;匹配地址 脚本命令&#xff09; 1、不给地址&#xff0c;那么就是针对全文处理 2、单地址&#xff0c;表示#&#xff0c;指定的行&#xff0c;$表示最后一行&#xff0c;/pattt…

redis运维(十二) 位图

一 位图 ① 概念 1、说明&#xff1a;位图还是在操作字符串2、位图玩字符串在内存中存储的二进制3、ASCII字符通过映射转化为二进制4、操作的是字符串value ② ASCII字符铺垫 1、控制ASCII字符 2、ASCII可显示字符 ③ SETBIT 细节&#xff1a; setbit 命令的返回值是之…

Vue + Element UI 实现复制当前行数据功能及解决复制到新增页面组件值不更新的问题

文章目录 引言第一部分&#xff1a;复制当前行数据功能的实现1.1 环境准备1.2 创建表格并渲染数据1.3 解决复制的数据不更新问题 第二部分&#xff1a;拓展知识2.1 Vue的响应性原理2.2 Element UI的更多用法 结语 Vue Element UI 实现复制当前行数据功能及解决复制到新增页面组…

数据结构与算法--特殊的完全二叉树--堆,堆排序,利用堆解决topk的问题

目录 前言 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树&#xff1a; 2.3 特殊的二叉树&#xff1a; 2.4 二叉树的性质 …

SimpleDateFormat在多线程下的安全问题

目录 情景重现 SimpleDateFormat解析 解决方案 局部变量 加锁 使用线程变量 使用DateTimeFormatter 情景重现 SimpleDateFormat类是Java开发中的一个日期时间的转化类。它可以满足绝大多数的开发场景&#xff0c;但是在高并发下会出现并发问题。接下来查看下文中的案例。…

php的字符转义函数有那些,是干什么的

在 PHP 中&#xff0c;字符转义函数是用于处理字符串中的特殊字符&#xff0c;以防止这些字符被误解、滥用或引起安全问题的一组函数。这些函数的主要作用是确保在将用户提供的数据插入到数据库、构建 HTML 输出或进行其他与安全相关的操作时&#xff0c;不会导致潜在的安全漏洞…