​TypeScript基本知识点整理——变量类型

在Javascript中,前面一篇文章介绍了TypeScript(微信公众号中的一篇文章),相信看过这边文章的人应该对Ts有所了解了。这篇文章大家和我一起来了解下TS的基本知识点吧。

在开始之前我们先装环境:

npm i typescript -g //全局安装typescriptnpm init -y //进入文件夹,初始化项目,生成package.json文件tsc --init //创建tsconfig.json文件npm i @types/node -S //这个主要是解决模块的声明

环境到此安装结束;

变量类型

(1)number 类型

let num1 : number = 20;let num2 : number = 175.5;let a1 : number = Infinity; //正无穷大let a2 : number = -Infinity; //负无穷小let a3 : number = NaN;

  注意:Infinity, -Infinity, NaN 也属于Number类型

(2)undefined 类型

let un : undefined = undefined;

注意:undefined 类型的数据只能被赋值为 undefined,在 typescript中,已声明未初始化的值要直接访问的话,类型需要定义为undefined。

(3)null 类型

let nu : null = null;

注意:

null 类型只能被被赋值为null

null是一个空指针对象,undefined是未初始化的变量,所以,可以把undefined看成一个空变量,把unll看成一个空对象。

特别注意: 默认情况下,undefined 和 null 类型,是所有其它类型的子类型,也可以说成,它俩可以给所有其他类型赋值。

(4)string 类型

//值类型let str : string = '你好!'//引用类型let str1 : String = new String('你好!')

(5)boolean 类型

let boo : boolean = true;let boo1 : boolean = false;

(6)symbol 类型

let sy : symbol = Symbol('bar');

注意: symbol类型的值是通过Symbol构造函数创建的。   

(7)数组类型

//字面量let arr1 : number[] = [1, 2]//泛型---->相当于数组中每个元素的类型let arr2 : Array<string> = ['a', 's'] //构造函数let arr3 : string[] = new Array('a', 's') //联合类型-->这里的联合类型的意思是,数组中元素的类型可以是number 或 string,两种都有也可以let arr4 : Array<number | string> = [2, 'a']

   (8)元组类型(tuple)

let tup : [string,number] = ['asdasd', 43233];

注意:

元组和数组看起来有点类似,但是,是有区别的

元组的长度是有限的,而且分别为每一个元素定义了类型

(9)枚举类型(enum)

enum--->组织收集一组相关变量的方式。

数字枚举

enum REN {// nan = 1 ----->初始化下标    nan,    nv,    yao}console.log(REN.nan)//0console.log(REN.nv)//1console.log(REN.yao)//2//使用数字枚举时,TS 会为枚举成员生成反向映射console.log(REN[2])// yao

注意:

数字的枚举---->下标从0开始,也可以自行设置枚举成员的初始值,它们会依次递增。

字符串枚举

enum SIJI {    chun = '春',    xia = '夏',    qiu = '秋',    dong = '冬'}console.log(SIJI.chun)//春console.log(SIJI.xia)//夏console.log(SIJI.qiu)//秋console.log(SIJI.dong)//冬

注意:

字符串枚举类型允许使用字符串来初始化枚举成员,可以是一个字符串字面量或者另一个字符串的枚举成员

字符串枚举类型不支持成员自增长,每个成员必须初始化,另外字符串枚举不会为成员生成发向映射

(10)void 类型

void 类型--->表示没有任何返回值,一般用于定义方法时方法没有返回值

function f1() : void {console.log('void类型')}

注意:

这里你也可以指定返回值类型为 undefined。因为 JS 中,如果函数没有返回值,则会默认返回 undefind。不过,使用 void 类型可以使表意更清晰。

(11)any 类型

注意: 其他类型都是any类型的子类型 ,any类型的值可以被赋值为任何类型的值

let an : any = 'any 类型';console.log(an)//any 类型an = 25;console.log(an)//25

注意:对于any 需要注意两点

如果在声明变量时,没有声明其类型,也没有初始化,(因为类型推断会自动判断类型),那么它就会被判断为any类型

let an1;an1 = '没有声明其类型,也没有初始化';console.log(an1)//没有声明其类型,也没有初始化an1 = 25console.log(an1)//25

在any类型变量上可以访问任何属性,即使它不存在。

let something: any = 42something.mayExist()    // 没问题,因为其可能在运行时存在something.toFixed() // 没问题,虽然确实存在,但是编译器并不会去检查

(12)never 类型

注意:

never 表示永远不会存在的值的类型, never 是任何类型的子类型,但是 没有任何类型是never的子类型或可以赋值给never类型(除了never本身之外)。即使 any也不可以赋值给never。

never 类型常用于两种情况

用于描述从不会有返回值的函数---》返回never的函数必须存在无法达到的终点。

function f5() : never {    while (true) {// do something     } }

用于描述总抛出错误的函数

function f2(msg : string) : never {    throw new Error(msg)}

(13)日期类型

let da : Date = new Date()console.log(da)

(14)正则表达式类型

//构造函数声明法let reg1 : RegExp = new RegExp('ljy','gi')console.log(reg1) //字面量的声明法let reg2 : RegExp = /ljy/giconsole.log(reg2)

 

总结

    TS的数据类型有14种之多,这也使得前后端的差异越来越小。

    对于习惯使用弱类型语言JS的同学可能有些不适应。

    下一篇文章会出关于TypeScript的函数的知识点,敬请期待。

 

 

扫码关注,更多知识

 

你点的每个关注,我都认真当成了喜欢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值