安装

  1. npm install -g typescript

编译代码

  1. tsc greeter.ts

接口

  1. interface Person {
  2. firstName: string;
  3. lastName: string;
  4. }
  5. function greeter(person: Person) {
  6. return "Hello, " + person.firstName + " " + person.lastName;
  7. }
  8. let user = { firstName: "Jane", lastName: "User" };
  9. document.body.innerHTML = greeter(user);


还要注意的是,在构造函数的参数上使用public等同于创建了同名的成员变量。

  1. class Student {
  2. fullName: string;
  3. constructor(public firstName, public middleInitial, public lastName) {
  4. this.fullName = firstName + " " + middleInitial + " " + lastName;
  5. }
  6. }
  7. interface Person {
  8. firstName: string;
  9. lastName: string;
  10. }
  11. function greeter(person : Person) {
  12. return "Hello, " + person.firstName + " " + person.lastName;
  13. }
  14. let user = new Student("Jane", "M.", "User");
  15. document.body.innerHTML = greeter(user);

基本数据类型

布尔值

  1. let isDone: boolean = false;

数字

  1. let decLiteral: number = 6;
  2. let hexLiteral: number = 0xf00d;
  3. let binaryLiteral: number = 0b1010;
  4. let octalLiteral: number = 0o744;

字符串

JavaScript程序的另一项基本操作是处理网页或服务器端的文本数据。 像其它语言里一样,我们使用 string表示文本数据类型。 和JavaScript一样,可以使用双引号( ")或单引号(')表示字符串。

  1. let name: string = "bob";
  2. name = "smith";

数组

TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上[],表示由此类型元素组成的一个数组:

  1. let list: number[] = [1, 2, 3];

第二种方式是使用数组泛型,Array<元素类型>

  1. let list: Array<number> = [1, 2, 3];

元组 Tuple

元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为stringnumber类型的元组。

  1. // Declare a tuple type
  2. let x: [string, number];
  3. // Initialize it
  4. x = ['hello', 10]; // OK
  5. // Initialize it incorrectly
  6. x = [10, 'hello']; // Error

当访问一个越界的元素,会使用联合类型替代:

  1. x[3] = 'world'; // OK, 字符串可以赋值给(string | number)类型
  2. console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString
  3. x[6] = true; // Error, 布尔不是(string | number)类型

枚举

  1. enum Color {Red, Green, Blue}
  2. let c: Color = Color.Green;

Any

  1. let notSure: any = 4;
  2. notSure = "maybe a string instead";
  3. notSure = false; // okay, definitely a boolean

Void

  1. function warnUser(): void {
  2. console.log("This is my warning message");
  3. }

Never

  1. // 返回never的函数必须存在无法达到的终点
  2. function error(message: string): never {
  3. throw new Error(message);
  4. }
  5. // 推断的返回值类型为never
  6. function fail() {
  7. return error("Something failed");
  8. }
  9. // 返回never的函数必须存在无法达到的终点
  10. function infiniteLoop(): never {
  11. while (true) {
  12. }
  13. }

类型断言

  1. let someValue: any = "this is a string";
  2. let strLength: number = (<string>someValue).length;
  1. let someValue: any = "this is a string";
  2. let strLength: number = (someValue as string).length;