TypeScript的变量类型及声明
TS和JS最大的区别就是在其中给变量引入了类型的概念
比如像之前我们使用JS的时候:
var a = 10;
这时a是数据类型,但当如果我们后面要使用a;我们也可以a = "hello";
这时a就变成了一个字符串类型。也就是说我们在js中没有严格的类型的规范,我们可以随意使用它。
但是TS则不同,通过TS我们就可以给变量声明类型。
一、变量类型
1、变量类型
在TS中我们可以指定变量的类型。如:
let a:number;
通过以上声明有什么用处呢?那就是a在以后的使用过程中,a的值只能是数字不能像js一样这次可以赋值为数字,下次可以赋值为字符串。
如果变量的声明和赋值同时进行,TS可以自动对变量进行类型转换,那我们就不用写变量类型,像这样:
let a = 12;///此时TS默认认为变量的类型是数字的形式
let c = fasle;那么以后我们对c只能赋值为boolean类型,因为他会自动推断c的类型
既然说直接赋值可以自动判断类型,那么是不是类型声明就是没有什么用了呢?
2、类型声明的应用
1)给函数声明时的参数使用
当然不是,JS中的函数是不考虑参数的类型和数量,写函数的时候不用考虑类型和数量,但是可能会造成安全的隐患,比如像两个数相加的函数,不小心传过去了一个字符串,那就变成了字符串拼接。
那么类型声明就有用了,我们可以在函数声明的时候,给参数加上类型声明,不会发生上述的情况。可以保证传入的类型不会错,不会出现难找的错误。避免在开发中可能会发生的错误。(语法上相当于js更加的规范)
2)函数的返回值也会用到类型声明
function sum( a: number, b: number):number {返回值为number
return a+b;返回值的类型必须是number类型
}
总结:
类型声明可以在声明时使用
如果数据的声明和赋值同时进行。可以省略类型声明
可以在函数参数和返回值上使用类型声明
二、变量声明
下面让我们来具体的看一下都有哪些函数声明吧!
1、类型都包括:number、string、boolean(基本的)、或者可以直接使用字面量来声明类型。
如:
1)let a:10; a =11;///就会报错,类似const,赋值后不能改
2)let b:"male"|"female";/使用|来连接多个类型,b的值只能有这两种
3)let c:boolean|string;/c的值可以是两种类型
这种类型叫联合类型
2、any和unknown类型
1)let d:any;/any表示的是任意类型,可以任意赋值
需要注意的是: (let d;隐式声明,也是any类型)
一个变量设置为any后,相当于对该变量关闭了TS的类型检测