类型
- boolean let isDone: boolean = false;
- number let decLiteral: number = 6;
- string let name: string = "bob";
- 数组 let list: number[] = [1, 2, 3]; let list: Array = [1, 2, 3];
- 元组 Tuple let x: [string, number]; x = ['hello', 10]; // OK x = [10, 'hello']; // Error
- enum enum Color {Red = 1, Green, Blue} let c: Color = Color.Green;
- Any let notSure: any = 4;
- void let unusable: void = undefined; function warnUser(): void { console.log("This is my warning message"); }
undefined和null let u: undefined = undefined; let n: null = null;
- 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 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
接口
- interface LabelledValue { label: string; } function printLabel(labelledObj: LabelledValue) { console.log(labelledObj.label); } let myObj = {size: 10, label: "Size 10 Object"}; printLabel(myObj);
- 可选属性 interface SquareConfig { color?: string; width?: number; }
- 只读属性 interface Point { readonly x: number; readonly y: number; }
- 函数类型 interface SearchFunc { (source: string, subString: string): boolean; }
- 继承接口 interface Shape { color: string; } interface Square extends Shape { sideLength: number; } let square = <Square>{}; square.color = "blue"; square.sideLength = 10;
类
- class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } } let greeter = new Greeter("world");
- 继承 class Animal { move(distanceInMeters: number = 0) { console.log(`Animal moved ${distanceInMeters}m.`); } } class Dog extends Animal { bark() { console.log('Woof! Woof!'); } } const dog = new Dog(); dog.bark(); dog.move(10); dog.bark();
泛型
- function identity<T>(arg: T): T { return arg; } let output = identity<string>("myString"); let output = identity("myString");
枚举
- enum Direction { Up = 1, Down, Left, Right }