前言:
TypeScript官网断断续续看过几遍,不知道项目中如何使用,有机会还是要实践一下。现在再把文档上不懂的知识点理一遍。
基础类型
1.什么是元组Tuple?
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
//声明一个元组类型 let x: [string, number]; //初始化正确 x = ['hello', 10]; //OK //初始化错误 x = [10, 'hello']; //Error //初始化正确 x = ['world', 11]; //OK
2.什么是枚举?
enum类型是对JavaScript标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red = 1, Green = 2, Blue = 4} let c: Color = Color.Green; let colorName: string = Color[2];
3.Any类型
不希望类型检查其对这些值进行检查而是直接让它们通过编译阶段的检查。
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false;
和Object类型的变量的不同:
notSure.ifItExists(); //okay notSure.toFixed(); //okay let prettySure: Object = 4; prettySure.toFixed(); //Error
当你只知道数组中一部分数据的类型时:
let list: any[] = [1, true, "free"]; list[1] = 100; //okay
4.Void类型
与any类型相反,它表示没有任何类型。
function warnUser(): void { console.log("这是我的提示信息!"); }
只能赋予它undefined和null
let unusable: void = undefined;
5.NUll和Undefined
null和undefined默认是所有类型的子类型,就是说你可以把null和undefined赋值给number类型的变量
let u: undefined = undefined; let n: null = null;
指定--strictNullChecks标记,null和undefined只能赋值给void和它们各自。
6.Never
never类型表示永不存在的值的类型。
// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
7.Object表示非原始类型
declare function create(o: object | null): void; create({prop: 0}); //OK create(null); //OK create(42); //Error create("string"); //Error create(false); //Error create(undefined); //Error
8.类型断言
“相信我,我知道自己在干什么”,类型断言好比其它语言里的类型转换。
类型断言有两种形式
(1)尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
(2)as语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
9.尽可能地使用let来代替var
(完)