#概要内容
1、装饰器
 类声明，方法， 访问符，属性或参数
2、package相关说明

3、npm

4、lanuch.json

5、setting.json
  （1）："typescript.tsdk"
  （2）："files.exclude"
  （3）："editor.formatOnSave"
6、调试

7、泛型

8、Promise

9、解构

10、各个类型

11、Proxy

12、规范
  （1）：如果在有限集里能够确定类型，一定要定义type或者interface,否则定义成any类型。
  （2）：如果需要约束某个键值(通常像一些switch的常量,事件的名字等)，可通过泛型+keyof来实现
    example1
        switch(name){
            case "type1":

            break;

            case "type2":

            break;
        }

    example2
        instance.addEventListener("eventName",()=>{},this);
  （3）：尽量不要用function来表示函数，而使用箭头函数来替代，除非你有通过function里的作用域来获取函数实例本身。
  （4）：尽量不要用var 来申明变量，改为用let来申明变量，一般情况下，实在找不出理由还需要使用 var 关键字的。
  （5）：如果typescript能够推断出类型，尽量不要添加类型，例如：let a = 1;

  13、生成器 generators * (typescript1.6)
  14、收窄函数 a is Cat（typescript1.6)
  15、this类型
  16、幂运算符** **=
  17、不可及的代码
  18、非空断言操作符  object!.value
  19、类型推断
  20、never类型
  21、通配符 ** **/*.js