angular等大型框架的基础语言为typescript,学习了一阵angular后,又回来重新学习typescript,有了一些体会,在这里和大家进行一下分享。
安装TypeScript和编译
安装TypeScript非常简单,在计算机安装了node.js的情况下,通过npm就可以安装:
npm install -g typescript
TypeScript是以ts为扩展名的文件,不能直接使用,要编译为javascript文件,才能使用。例如我们有一个greeter.ts文件,编译命令是:
tsc greeter.ts
输出结果为一个greeter.js文件。这样我们就可以使用了。
TypeScript的基础类型
为了让程序有价值,我们需要能够处理最简单的数据单元:数字,字符串,结构体,布尔值等。 TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。这里通过代码列举一下typescript的基础类型,注意看在冒号和等号之间的代码,它定义了变量的类型,在函数中就代表参数或返回值的类型。
布尔值:let isDone: boolean = false;
数字:所有数字类型都是浮点型:let decLiteral: number = 6;
字符串:let name: string = "bob";
数组有两种定义方法:let list1: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3];
元祖:这是一个新的概念。
定义元祖:let x: [string, number];
给元祖赋值:x = ['hello', 10];
如果元祖值越界,会采用联合类型替代x[3] = 'world';
访问元祖里的数据:console.log(x[0] + ' ' + x[1] + ' ' + x[3] + x[5]);
访问的结果是:hello 10 world undefined
这里有个有趣的现象,x[5]越界了而且没有定义,结果为undefined。
枚举:enum类型是对JavaScript标准数据类型的一个补充。使用枚举类型可以为一组数值赋予友好的名字。
定义枚举:enum Color {Red, Green, Blue}
将枚举属性赋值给变量:let c: Color = Color.Green;
let colorName: string = Color[2];
c的值变为Green。
默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
c的指还是Green
any类型:有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。 那么我们可以使用 any类型来标记这些变量。
let notSure: any = 4;
let list3: any[] = [1, true, "free"];
list[2] = 100;
list的内容变为:[1, true, 100]
any类型和Object类型的区别:Object类型的变量只是允许你给它赋任意值 - 但是却不能够在它上面调用任意的方法,any类型可以调用任意方法。
void:这个类型和其他有void类型的语言含义相同,表示不返回任何值。这个类型主要用在函数的返回值上,声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null。
null 和 undefined:这两个类型用处也不是很大,也许在某处你想传入一个 string或null或undefined,你可以使用联合类型string | null | undefined(联合类型后面再说)。
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) {
}
}
类型断言:有时候你会比TypeScript更了解某个值的详细信息。通过类型断言这种方式可以告诉编译器你要声明的类型。
类型断言的两种写法:
- 尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;
- as语法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;
TypeScript的基本类型就是这些了,在这里给大家罗列出来,作为参考。