TypeScript简单类型声明
引言:typescript中为了使编写的代码更加规范,更有利于维护,增加了类型校验,在typescript中主要给我们设定了一下数据类型:
布尔类型(boolean)、数字类型(number)、字符串类型(string)、数组类型(array)、元组类型(tuple)、枚举类型(enum)、任意类型(any)、null和undefined类型、void类型、never类型...
在typescript中,规定在声明一个变量的同时,必须规定该变量的类型.
let 变量名:数据类型=值;
1.布尔类型(boolean)
声明布尔类型通过boolean
let flag:boolean=true; // 声明一个布尔类型变量flag,值为true
let flags:boolean=false; // 声明一个布尔类型变量flags,值为false
flag=false; // 将flag变量的值设置为false
2.数值类型(number)
在typescript中,数值类型包括了整型与浮点型,我们可以通过number直接声明一个整型或浮点型
let num:number=5; // 声明一个整型数值类型变量num;
let n1:number=3.1415; // 声明一个浮点型变量
num=9.254; // 转变赋值
3.字符串类型(string)
在typescript中,字符串类型可以通过单引号 ' '或双引号" " 进行声明,通过string标识
let str:string="Hello";
let str1:string;
str1='World';
let str2:string|boolean;
let lastStr='TypeScript';
4.数组类型(array)
在typescript中,数组的声明方式我们可以通过两种方式实现
(1)let 数组名:数组元素类型[]=[数组元素...]; // 在声明数组的同时也规定了数组元素值的类型;
let arr:string[]=['h','e','l','l','o']; // 声明一个数组,同时规定数组元素必须是字符串类型
let arr:number[]=[1,2,3,4,5]; // 声明一个数组,同时规定数组元素必须是数值类型
......
错误写法:
let arr:number[]=['hello','str',2,3.14]; // 数组元素必须是数值类型;
(2)let 数组名:Array<数组元素类型>=[数组元素值] //在声明数组的同时也规定了数组元素值的类型;
let arr:Array<string>=['W','o','r','l','d']; // 声明一个数组,同时规定数组元素必须是字符串类型
let arr:Array<number>=[1,3,5,2,1,6]; // 声明一个数组,同时规定数组元素必须是数值类型
错误写法:
let arr:Array<number>=['hello','str',2,3.14]; // 数组元素必须是数值类型;
5.元组类型(tuple)
在typescript中,元组类型属于数组类型的一种,只是在于元组类型可以规定数组元素值的多个数据类型.
let arr:[string,number,boolean]=['ts',3.1415,false]; // 规定数组元素的值类型依次为字符,数值,布尔类型
6.枚举类型(enmu)
枚举类型主要用于标识代码状态,是一个标识符.当我们需要表示某些变量表示什么意思时,可以通过枚举类型
语法:(枚举类型首字母大写)
enum 变量名{
变量名=含义,
...
}
例如:
enum Flag{
success=1,
error=-1,
}
// 数字枚举
enum Direction {
Up = 1,
Down,
Left,
Right
}
//我们定义了一个数字枚举, Up使用初始化为 1。 其余的成员会从 1开始自动增长。 换句话说, Direction.Up的值为1, Down为 2, Left为 3, Right为 4。
enum Status {
Error = '失败',
Success = "成功",
Message = "消息",
More = '更多',
}
console.log(Status); //{Error: "失败", Success: "成功", Message: "消息", More: "更多"}
console.log(Status.Error); // 失败
enum Status2{
Error,
Success,
Message,
More,
}
console.log(Status2) //{0: "Error", 1: "Success", 2: "Message", 3: "More", Error: 0, Success: 1, Message: 2, More: 3}
7.任意类型(any)
所谓任意类型就是相当于没有给变量规定值的类型,我们可以任意赋值,任意类型通过any声明
声明任意类型即按照javascript的方式书写.
语法:
let 变量名:any=值
或
let 变量名; // 会默认设置为any类型
变量名=12;
变量名=true;
变量名='Hello';
// 若是在声明变量时赋初值,则初值类型默认为该变量的类型
let str='Hello'; // 变量str规定为string类型,不能再赋值其他类型了
例如:
let str:any='Hello';
str=3.14;
str=[1,3,2,'5'];
console.log(str); // 1,3,2,'5';
let num=12; // num为数字类型;
num='Hello'; // 错误写法,num为数字类型,不能赋值字符.
8.null和undefined类型
undefined是其他类型(never类型)的子类型
声明方式:
// 方式一:
let num:undefined; // undefined
//方式二(推荐使用):
let str:string|undefined; // 若赋值,则为值,若没有赋值,则为undefined;
console.log(str); // undefined
str='Hello'
console.log(str); // Hello
null的声明方式与undefined相似
声明方式:
let num:null; // 不能进行赋值,返回值为null,当声明为null类型后,就不能再进行赋值操作了.
9.void类型
void类型在void中表示没有任何类型,一般用于定义没有返回值的方法.
语法:
function getName():void{
...执行代码.
// 注意,末尾没有return语句
}
10.never类型
never类型表示其他类型(包括null与undefined)的子类型,表示从不会出现的类型
语法:
let num:never;
11.联合类型使用
所谓联合类型,即在声明一个变量的时候,通过 | 符号同时为其赋予多个数据类型,这样我们就可以进行不同类型赋值
联合类型相当于任意类型的特定版本,通过规定类型范围来实现需求
let 变量名:数据类型1|数据类型2|数据类型3...
例如:
let str:str|number|boolean;
str=5;
str=true;
str='Hello';
str=undefined; // 错误,这里并没有声明可以赋值undefined类型