类型申明说明与使用
申明作用:让代码质量可控,解决javascript变量无类型导致的问题
类型申明:类型申明起作用阶段在编码阶段不在运行阶段,类似java语法错误检查
申明方式:let 变量名 : 类型
基础类型:
[string|number|boolean|number[]|Array<>|Tuple|enum|Any|void|Null|Undefined|Never|Object]
let关键字是JavaScript的一个新概念,TypeScript实现了它。尽量使用let来代替var
类型约束:
//*****************************************
//强制制定变量类型,不同类型数据不能相互赋值
//*****************************************
let ms_a: string;
let ms_b: number;
let ms_c: boolean = true;
ms_a = 'hello world';
//ms_a = 2022; //报错,类型不匹配
ms_b = 2022;
//ms_b = 'hello world';//报错类型不匹配
//ms_a = ms_b; //类型不匹配,无法赋值
console.log(ms_a);
console.log(ms_b);
console.log(ms_c);
函数变量
//*****************************************
//函数申明,不同类型不能传值调用
//*****************************************
function ms_sum(a: number, b: number): number {
return a + b;
}
console.log(ms_sum(1, 2));
//console.log(ms_sum(1,'2')); 类型错误
字面量和联合变量
//*****************************************
//字面量,联合类型
//*****************************************
let ms_d: 'r' | 's';
let ms_e: 10;
ms_d = 'r';
console.log(ms_d);
ms_d = 's';
console.log(ms_d);
// ms_d = 1; //只能选择r 或者 s值
ms_e = 10;
// ms_e = 11; // e不可变
console.log(ms_e);
any类型
//*****************************************
//any,任意类型,非必要不适用,要不回归到js
//*****************************************
let ms_f: any;
ms_f = true;
console.log(ms_f);
ms_f = 'hello world';
console.log(ms_f);
ms_f = 10;
console.log(ms_f);
void类型
//*****************************************
//void类型表示没有任何类型
//*****************************************
function ms_void(a: string): void {
console.log("void 类型测试", a);
// return 1; //错误
}
ms_void('121212');
object类型
//*****************************************
//Object类型表示永远没有返回类型
//*****************************************
function ms_object(obj: Object | null): void {
console.log(obj)
}
ms_object({ a: 123 });
never类型
//*****************************************
//never类型表示永远没有返回类型
//*****************************************
function ms_never(a: string): never {
throw new Error("错误");
}
ms_never('121212');