因公司项目中有使用 typescript,虽然项目里将其转为了js,但是怎么能停下学习的脚步呢?搞起来!此博文用来总结学习成果和方便后期回顾。总的来说typescript语法类似java和kotlin的结合体,如果你还不熟悉js当然是先去学好js再考虑接触typescript,毕竟它只是js的一个超集。

typescript安装

  1. 安装ts

    1
    npm install -g typescript
  2. 运行ts命令行

    1
    tsc -h
  3. IDE

    1
    推荐使用visual studio code

基本数据类型

  1. boolean

    1
    var isDone:boolean = true;
  1. nunber

    1
    var width:number = 100;
  2. string

    1
    va name:string = "hello";
  3. Array

    1
    2
    var arr:number[] = [1,2,3];
    var arr:Array<number> = [1,2,3];
  4. enum

    1
    enum Color {Red,Green,Blue}
  5. any(不确定类型)

    1
    2
    3
    4
    5
    6
    // 不确定简单变量类型
    var anyField:any = "hello";
    notSure = true;
    // 不确定数组类型
    var anyArr = [1,"hello",true];
    anyArr[0] = "world";
  6. void

    1
    2
    3
    function test():void{
    console.log("hello world");
    }

可选属性

1
2
3
4
interface ICar {
color?:string; // 实现类无需实现
type?:any; // 实现类无需实现
}

  1. 类的定义

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /*
    * 类的定义
    */
    class User {
    // 普通属性
    private name:string;
    // 静态属性
    public static age:number = 30;
    // 构造方法
    constructor(name:string){
    this.name = name;
    }
    // 普通方法
    public say():void{
    //
    }
    }
    /*
    * 类的使用
    */
    var user:User = new User("whh");
    user.say();
  2. 类的继承

    1
    2
    3
    4
    5
    6
    class User {}
    class Student extends User{
    public say():void{
    //
    }
    }
  3. Get\Set 访问器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class User {
    private name:string;
    //
    get getName():string{
    return this.name;
    }
    //
    set setName(name:string):viod{
    this.name = name;
    }
    }

接口

  1. 接口定义

    1
    2
    3
    4
    5
    interface ICar {
    var color:string;
    run();
    getType:()=>string
    }
  2. 接口的实现

    1
    2
    3
    4
    class Bus implements ICar {
    color:string;
    getType:()=>"Bus";
    }

方法重载

方法的重载只和方法名称和参数有关系,和返回类型无关。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class User {
public run():string{
//
}

public run(name:string):number{
//...
return 10;
}

public run(age:number):number{
//...
return 14;
}
}

typescript文件编译

1
tsc [目标文件] [输出文件]

参考

  1. typescript官网
  2. typescript源码