目录
一.变量声明
二.基础数据类型
1.boolean(布尔值)
2.number(数字)
3.string(字符串)
4.array(数组)
5.Tuple(元组)
6.enum(枚举)
7.Any
8.Void
9.Null和Undefined
10.Never
11.Object
三.类型别名与联合类型
一.变量声明
因为TypeScript(微软开发的开源编程语言)是JavaScript的超集,所以支持JavaScript中声明变量的方式(var,let,const)
在TypeScript中声明变量和JavaScript中的区别就是,在JavaScript中声明变量,变量是没有确定类型的,也就是说同一个变量名我们可以赋值所有的数据类型。而TypeScript的变量有明确的类型,在声明变量时我们同时给它规定数据类型,声明如下:
let a:boolean=true;
let b:number=111111111;
let c:string="这是字符串";
二.基础数据类型
JavaScript数据类型: number boolean string array undefined null
TypeScript新增数据类型: tuple enum any void never
1.boolean(布尔值)
boolean 布尔值: false/true;
声明布尔值变量方式:
/* boolean布尔值 */
let a:boolean=true;
let b:boolean=false;
console.log(a,b);//true false
2.number(数字)
number 数值:浮点数 --------支持2.8.10.16进制数 会被编译为10进制数字
声明数字变量方式:
/* 数字 */
let num1:number=10;
let num2:number=0xf00d;//16进制
let num3:number=0b1010;//2进制
let num4:number=0o744;//8进制
let num5:number=NaN;
let num6:number=Infinity;
console.log(num1,num2,num3,num4,num5,num6);
// 10 61453 10 484 NaN Infinity
3.string(字符串)
string 字符串:双引号"" 单引号'' 反引号``括起来的文本数据
声明字符串变量方式:
/* 字符串 */
let str1:string="字符串1";
let str2:string="字符串2";
let name1:string="大聪明";
let age:number=21;
let introduce:string=`我的名字是${name1},我的年龄是${age}`
console.log(str1,str2);//字符串1 字符串2
console.log(introduce);//我的名字是大聪明,我的年龄是21
4.array(数组)
数组声明方式有两种:
1.可以在元素类型后面接上 []
,表示由此类型元素组成的一个数组
2.Array<元素类型>
声明数组变量方式:
/* 数组 */
let arr1:number[]=[1,2,3];
let arr2:string[]=["a","b","c"];
let arr3:Array<number>=[1,2,3]
let arr4:Array<string>=["a","b","c"]
let arr5:Array<number|string>=["a",1]//表示数组中的数据既可以是数字也可以是字符串类型
console.log(arr1);//[ 1, 2, 3 ]
console.log(arr2);//[ 'a', 'b', 'c' ]
console.log(arr3);//[ 1, 2, 3 ]
console.log(arr4);//[ 'a', 'b', 'c' ]
console.log(arr5);//[ 'a', 1 ]
5.Tuple(元组)
元组Tuple:表示一个已知元素数量和类型的数组,各元素的类型不必相同
/* 元组 */
let a:[string,number]=["string1",1111];
/*
类似解构赋值实现
a[0]:string="atring1"
a[1]:number=1111
*/
console.log(a[0]);//string1
console.log(a[1]);//1111
6.enum(枚举)
enum类型---- 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。
/* 枚举 */
enum Color {Red, Green, Blue}
//等同于enum Color {Red=0, Green=1, Blue=2}
let c: Color = Color.Green;
console.log(c);//1
默认情况下,从0
开始为元素编号。
当然! 你也可以手动的指定成员的数值
/* 枚举 */
enum Color {Red=1, Green, Blue}
// 等同于:enum Color {Red=1, Green=2, Blue=3} 逐个递增
let c: Color = Color.Green;
console.log(c);//2
/* 枚举 */
enum Color {Red=1, Green=4, Blue=5}
// 等同于:enum Color {Red=1, Green=4, Blue=5}
let c: Color = Color.Green;
console.log(c);//4
枚举类型提供的一个便利是你可以由枚举的值得到它的名字:
/* 枚举 */
enum Color {Red=1, Green=4, Blue=5}
// 等同于:enum Color {Red=1, Green=4, Blue=5}
let c: Color = Color.Green;
console.log(c);//4
let colorName: string = Color[4];//4表示枚举的值
console.log(colorName);//显示'Green'因为上面代码里它的值是4
7.Any
还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any
类型来标记这些变量:
/* any */
let notSure1: any = 4;
let notSure2: any = "a";
let notSure3: any = true;
let notSure4: any = [1];
console.log(notSure1,notSure2,notSure3,notSure4);//4 a true [ 1 ]
注意:声明一个变量为任意值之后,对它的任何操作,返回的内容类型都是任意值。
8.Void
某种程度上来说,void
类型像是与any
类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是 void
:
/* void */
function fn(): void {
console.log("1111111111111111");
}
注意:声明一个void类型的变量没有什么用,可以把undefined赋值给void,但不能把null赋值给void
9.Null和Undefined
undefined
和null
两者各自有自己的类型分别叫做undefined
和null
。 和 void
相似,它们的本身的类型用处不是很大
10.Never
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型
never
类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。 即使 any
也不可以赋值给never
。
注意:返回never的函数必须存在无法达到的终点
function fn(): never {
while (true) {
}
}
function error(message: string): never {
throw new Error(message);
}
11.Object
object
表示非原始类型,也就是除number
,string
,boolean
,symbol
,null
或undefined
之外的类型。object 和Object的区别是 Object是类(Object是所有类的基类(父类)), object是引用类型
三.类型别名与联合类型
多个类型的联合,它们之间是或的关系。
type manyType = number | boolean | string;
let a: manyType
a = 1;
console.log(a);//1
a = true;
console.log(a);//true
a = 'a';
console.log(a);//a
四.类型推论
在没有声明类型的变量被赋值了一次之后,变量的类型就确定了,之后再次赋值的时候不可以更改类型。