一、安装TypeScript
有两种主要的方式来获取TypeScript工具:
-
通过npm(Node.js包管理器)
-
安装Visual Studio的TypeScript插件
npm install -g typescript
二、技能点
**
- ****类型注解
TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。
**
-
布尔值
let isDone: boolean = false; -
数字
TypeScript里的所有数字都是浮点数。 这些浮点数的类型是number。let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; -
字符串
① 使用双引号(")或单引号(')表示字符串。let name: string = "bob";② 使用模版字符串,它可以定义多行文本和内嵌表达式。
let name: string = `Gene`; let age: number = 37; let sentence: string = `Hello, my name is ${ name }. I'll be ${ age + 1 } years old next month.`; let sentence: string = "Hello, my name is " + name + ".\n\n" + "I'll be " + (age + 1) + " years old next month."; -
数组
① 在元素类型后面接上[],表示由此类型元素组成的一个数组。let list: number[] = [1, 2, 3];② 使用数组泛型,
Array<元素类型>:let list: Array<number> = [1, 2, 3]; -
元祖Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。let x: [string, number]; -
枚举
enum类型是对JavaScript标准数据类型的一个补充。enum Color {Red, Green, Blue} let c: Color = Color.Green;默认情况下,从
0开始为元素编号。
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。enum Color {Red = 1, Green, Blue} let colorName: string = Color[2]; console.log(colorName); // 显示'Green'因为上面代码里它的值是2 -
Any
在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。 -
Void
某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 -
Null 和 Undefined
默认情况下null和undefined是所有类型的子类型。let u: undefined = undefined; let n: null = null; -
Never
never类型表示的是那些永不存在的值的类型。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使any也不可以赋值给never。// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); }
// 推断的返回值类型为never function fail() { return error("Something failed"); }
// 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
-
Object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。
使用object类型,就可以更好的表示像Object.create这样的API。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
-
**类型断言
**类型断言有两种形式。 其一是“尖括号”语法: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;**