一、定义变量

TS 中创建变量有四个要素:

  1. 定义变量的关键字:var、let、const
  2. 变量名
  3. 变量的数据类型
  4. 变量的初始值

语法结构如下:

let 变量名: 数据类型 = 初始值

注意,变量的初始值必须是当前定义的数据类型。

例如:

let a: number = 10;

二、TS 的数据类型

1、基础类型

  • 数字 number:TS 中不管是整数还是小数都属于 number 类型;
  • 字符串 string:单引号、双引号、ES6 的模板字符串都属于 string 类型;
  • 布尔值 boolean:true 和 false;
let a: number = 10;
let b: string = 'hello';
let c: boolean = true;

2、null 和 undefined

TS 中的 null 和 undefined,跟 JS 中的一样,null 类型下的数据只有 null 本身,undefined 类型下的数据也只有它自身。

let d: null = null;
let e: undefined = undefined;

在 TS 中,这两个数据类型本身的作用不是很大。

3、any 类型

any 表示任意数据类型,意味着我们可以将任何变量都设置成 any 类型。

let f: any = 1;
let g: any = 'hello';

但是,尽量不要使用该类型。

4、void

void 从概念来说,刚好和 any 相反,它表示没有任何类型。

通常,当一个函数没有返回值得时候,我们会将返回值的类型设置为 void:

基础语法:

function 函数名(): 返回值类型 {

}

示例代码:

function foo(): void {

}

5、数组

TS 中要求数组中所有元素的数据类型必须一致,因为我们在通过 TS 定义数组时,必须先声明数组中子元素的数据类型。

基础语法:

let 变量名: 子项类型[] = 数组值;

示例代码:

let h: number[] = [1, 2, 3];

6、元组

元组类型,允许创建一个已知数组子项的数量和类型的数组,数组中子项的类型可以不一样。

基础语法:

let 变量名: [类型一, 类型二] = [值一, 值二];

示例代码:

let i: [number, string, boolean] = [1, 'a', true];

7、对象

基础语法:

let 变量名: { 属性名一: 数据类型, 属性名二: 数据类型 } = { 属性名一: 值, 属性名二: 值 }

示例代码:

let j: { name: string, age: number } = { name: '张三', age: 20 }

8、枚举

我们在实际开发中,很多时候会使用数字来表示一些状态。例如:

  • 在设置性别时,会用数字 1 表示男性,用数字 0 表示女性;
  • 在设置订单状态时,会用数字 0 表示订单支付失败,数字 1 表示订单支付成功,数字 2 表示订单超时…

大部分时候,我们没办法记住每一个数字所对应的含义,因此,TS 中提供了枚举的类型来描述每一个数字的含义。

基础语法:

enum 自定义名字 {
含义 = 数字一,
含义 = 数字二,
}

示例代码:

enum gender {
female = 1,
male = 0
}
const student = { name: '张三', age: 20, gender: gender.female }
console.log(student); // { name: '张三', age: 20, gender: 1 }

9、never

never 类型表示永远不存在的值的类型。

例如某一个函数中抛出了异常,对于该函数的返回值来说,就永远都不存在,因此该函数的返回值的类型可以设置为 never。

示例代码:

function foo(): never {
throw new Error('错误')
}

10、unknow

unknow 是 TS 3.0 中新增的类型。它和 any 类似,任意类型的数据都可以设置为 unknow。

示例代码:

let k: unknown = 1;
let l: unknown = 'hello';

unknow 和 any 的区别在于:

任何类型的值都可以赋值给 any,同时,any 类型的值也可以赋值给任何类型。

let m:any = 1;
m = true;
let n: string = m;

任何类型的值都可以赋值给 unknow,但是,unknow 类型的值只能赋值给 unknow 或 any。

let o: unknown = "a";
let p: any = o;
// let q: string = o; // 报错

2.TS 的数据类型的更多相关文章

  1. TypeScript——02——TS基本数据类型介绍和使用

    一,TS的数据类型 ES6的数据类型: 6种基本数据类型 Boolean Number String Symbol undefined null 3种引用类型 Array Function Objec ...

  2. Ts基本数据类型

    TS的基本数据类型 string let str : string str = 1 //报错 会提示num是字符串 不是数字 str = 'test' //正确 //拼接字符串 let str2 : ...

  3. TS 基础数据类型

    1.基础数据类型 Boolean布尔值   Number数字 String字符串  Array数组 Tuple元组  Enum枚举   Any    void Boolean布尔值:true/fals ...

  4. ts常用数据类型

    1.1 布尔值 let isTrue: boolean = false; console.log(isTrue); 1.2 数字 let age: number = 26; console.log(a ...

  5. TypeScript学习第二天:认识ts的数据类型

    目录 1,类型总览 2,基本类型 2.1,布尔 2.2,数字 2.3,字符串 2.4,Null 2.5,undefined 2.6,symbol 2.7,bigint 3,引用类型 3.1,数组 Ar ...

  6. typeScript入门(一)构建环境和数据类型

    最近入坑v-cli 3.0,发现ts越来越常用了,于是开始入坑学习. 1.构建ts环境 npm install -g typescript Mac和vscode用户可以用以下方式构建tsdemo项目 ...

  7. 感受typescript定义变量和数据类型的神奇魔力

    变量和数据类型 你的Javascript能力到达瓶颈?那是因为你还不会typescript.掌握TS,让你的开发更加准确简洁. 今天的学习中,我们接着从TS的数据类型和变量入手,感受它们的奇妙魔力. ...

  8. 手摸手教你用 yapi-to-typescript生成Yapi的TypeScript数据类型

    一 背景 现代社会比较重视效率,本着这个思想宗旨,能用工具自动高效做的事情,就不要低质量的勤奋.yapi-to-typescript就是一款自动生成接口请求与响应的typescript数据类型定义的工 ...

  9. java基础之集合框架

    6.集合框架: (1)为什么出现集合类? 面向对象对事物的体现都是以对象的形式,为了方便对多个对象的操作,就对对象进行存储. 集合就是存储对象最常用的一种方式. (2)数组和集合都是容器,两者有何不同 ...

  10. 基于 libpcap库的sniffer程序

    基于 libpcap库的sniffer程序 Libpcap库是WireSharek和Tcpdump抓包程序的基础,利用libcap我们自己也可以实现自己的抓包程序,在网络上实时抓包分析,或者利用处理的 ...

随机推荐

  1. 使用yum快速安装mysql-5.7(用于测试)

    1)CentOS 7 下安装 MySQL 5.7 下载并安装MySQL官方的 Yum Repository [wget -i -c http://dev.mysql.com/get/mysql57-c ...

  2. 升级版本后,报错go: -i flag is deprecated

    环境 go version go1.18.6 升级go版本后,本地项目起不来 将-i去掉 应用,在重启,则正常启动

  3. ubuntu测网速speedometer

    下载安装speedometer sudo apt-get install speedometer 查询需要测速的网卡 ifconfig 测速 speedometer -rx enp2s0 执行效果图如 ...

  4. Spring入门之使用 spring 的 IOC 解决程序耦合(Spring 基于 XML 的 IOC 细节[掌握])(03-02)

    3.3Spring 基于 XML 的 IOC 细节[掌握] 3.3.1 spring 中工厂的类结构图 3.3.1.1 BeanFactory 和 ApplicationContext 的区别 Bea ...

  5. KingbaseES V8R6集群运维案例之---repmgr standby promote应用案例

    案例说明: 在容灾环境中,跨区域部署的异地备节点不会自主提升为主节点,在主节点发生故障或者人为需要切换时需要手动执行切换操作.若主节点已经失效,希望将异地备机提升为主节点. $bin/repmgr s ...

  6. temp_laijx_2023

    ############################ [{\"itemKey\": \"jenkinsConfig\",\"itemValue\& ...

  7. 在 Windows 上使用VirtualBox 安装 Ubuntu

    一.VirtualBox虚拟机软件 之前使用过VMWare,这是第一次尝试使用VirtualBox,记录一下~ 我们可以从官网下载VirtualBox,地址:https://www.virtualbo ...

  8. 【服务器数据恢复】RAID6数据恢复案例

    服务器数据恢复环境:一台Web服务器中有一组由8块磁盘组建的raid6磁盘阵列,用来运行数据库和存储普通办公文件. 服务器故障:服务器raid6磁盘阵列中有两块硬盘离线,但是管理员没有注意到这种情况, ...

  9. Error:java: 无效的目标发行版: 9

    今天碰到一个编译问题,起先以为是jdk版本问题,但是查看了下,发现版本没错. 顿时有一种怀疑人生的感觉. 然后网上找了许久,终于让我找到答案: 下面直接上解决方案: 将版本9改为8,保存,测试运行,可 ...

  10. 日常开发记录-Object函数的内置方法Object.entries

    方法1: const data = { id: 1, name: "张三", age: 22 } let params = "" /* Object.entri ...