一.基础类型

1.1 any任意类型

声明为 any 的变量可以赋予任意类型的值。

let msg:any;

msg = "我是字符串";

console.log(msg);

1.2 number数字类型

双精度 64 位浮点值。它可以用来表示整数和分数。

let age:number;

let amount:number;

age = 19;

amount = 89.5;

1.3 string字符串类型

字符串类型,用单引号、双引号、模板字符串(反引号)定义的文本。

let msg:string;

msg = "我是:张三" + "年龄:19";

let msg1:string;

msg1 = `我是张三,年龄:19`;

1.4 boolean布尔类型

表示逻辑值:true 和 false。

let flag:boolean;

flag = true;

1.5 数组类型

·在类型后面加[ ]

let ages:number[ ];

ages = [1,2,3];

console.log(ages);

·使用范类型Array。

let ages:Array<any>;

ages = [1,"2","3"];

console.log(ages);

1.6 元组类型

元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

let zs:[string,number];

zs  = ["张三",10];//true

zs  = ["张三","10"];//false

1.7 enum枚举类型

枚举类型用于定义数值集合。

enum days{Sun=10, Mon, Tue, Wed, Thu, Fri, Sat}

console.log(days.Sun);//10

console.log(days.Mon);//11

console.log(days.Tue);//12

总结:

数字枚举如果没有初始化,默认初始化值为0,每项+1

如果有初始化,则在初始化值的基础上,每项+1

如果某项被赋值(可以是负数或负数),那么之后的项在此基础上+1

如果未手动赋值的枚举项与手动赋值的重复了,如例4,TypeScript 是不会察觉到这一点的,但建议尽量避免

1.8 void无任何类型

用于标识方法返回值的类型,表示该方法没有返回值。

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null;

声明一个方法,没有返回值:

function hello(): void {

    alert("Hello Runoob");

}

1.9 null类型

对象值缺失。

1.10 undefined类型

初始化变量未定义的值。

1.11 never类型

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

比如函数抛出一个异常:

function hello(str:string):never{

    throw new Error(str);

}

1.10 unknown类型(类型断言)

var str:unknown;//未知类型

str = "123";

str = 123;

var str1:string;

str1 = str;//error

总结:

unknown未知类型 自己可以赋值任意类型,但是不可以赋值给别人.

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

str1 = str as string;//第一种方式 正确 告诉编辑器str就是字符串

Str1 = <string> str;//第二种方式

1.11 函数类型

也就是指定参数的类型和返回值的类型

function demo(a:number,b:number):number{

    return a+b;

}

demo(1,2);

1.12 对象类型

1)常规写法

let a:object;

a = {realname:"张三"}

2)

let P1:{realname:string,age:number}//定义类型

P1 = {realname:"张三",age:19} //赋值需要上面定义保持一致

3)

let P1:{realname:string,age?:number}//加一个问号,age属性可加可不加

P1 = {realname:"张三"}

4)

let P1:{realname:string,[propName:string]:any} //属性名不确定时,定义 propName

随便定义,any是类型

P1 = {realname:"张三",age:19}

5)箭头函数设置函数结构

let a:(a:number,b:number)=>number;

a = function(a:number,b:number):number{

    return a+b;

}

6)let a:{name:string}&{age:number}; //与并且的意思

a = {name:"ss",age:19};

1.13 类型的别名

用type设置类型别名

type mytype = string;//类型别名

let a:mytype;

let b:mytype

type mytype1 = 1 |2 |3;

let aa:mytype1;

let bb:mytype1;

二.变量声明

2.1 命名规则

var [变量名] : [类型] = 值;

例:let str:string = "hello";

1)变量名称可以包含数字和字母。

2)除了下划线 _ 和美元 $ 符号外,不能包含其他特殊字符,包括空格。

3)变量名不能以数字开头。

4) 变量不要使用 name 否则会与 DOM 中的全局 window 对象下的 name 属性出现了重名。

2.2 声明未设置

var [变量名] : [类型];

声明变量的类型,但没有初始值,变量值会设置为 undefined;

2.3 声明未设置类型

var [变量名] = 值;

声明变量并初始值,但不设置类型,该变量可以是任意类型:

2.4 字面量声明

1)let aa:100;//aa就只能是10

2)let flag:"true" | "false";//是字符串类型true或者是false

let flag1:boolean | string;//可以是布尔类型或者字符串类型