#中文文档
https://www.tslang.cn/docs/release-notes/typescript-2.2.html

#概要内容
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、解构

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
20、never类型
21、通配符 glob
    * 匹配任意 0 或多个任意字符
    ? 匹配任意一个字符
    [...] 若字符在中括号中，则匹配。若以 ! 或 ^ 开头，若字符不在中括号中，则匹配
    !(pattern|pattern|pattern) 不满足括号中的所有模式则匹配
    ?(pattern|pattern|pattern) 满足 0 或 1 括号中的模式则匹配
    +(pattern|pattern|pattern) 满足 1 或 更多括号中的模式则匹配
    *(a|b|c) 满足 0 或 更多括号中的模式则匹配
    @(pattern|pat*|pat?erN) 满足 1 个括号中的模式则匹配
    ** 跨路径匹配任意字符
22、索引访问类型
23、映射类型
    Partial 将对象所有的属性变成可选
    Readonly 将对象所有的属性变成可读
    Required 将对象所有的属性变成必选
    Pick 从对象中取可用的属性
    Record
    Exclude
    Extract
    NonNullable
    ReturnType
    InstanceType
24、对象类型  object
25、数组与元组 let a:[string,number];
26、普通字符串与模板字符串 ``
27、枚举 enum
28、联合与交叉类型 | &
29、类型别名 type
30、类型推论、类型断言、类型保护