/**
- ts-微软开发包含js(最终变异为js)的扩展语言(js的超集)适合大型项目开发
- 数据类型、逻辑漏洞、低级书写错误、属性访问漏洞
- 静态类型检查(运行前检查)
/
/* - tsc --init ----------tsc --watch
- npm i typescript -g tsc xxx.ts
- /
/* - 类型大小写区别 小写是基元 大写则是对象(主要是针对string、number、boolean这三种常用的)
- 类型推断
- 关于未知类型:if判断 或者 强转换as
- any unknown(未知类型) never(不能有值包括undefined "" null等) void(函数无返回值,返回结果不受调用影响接受undefined,void包含undefined) tuple enum
- type interface
- 类型不能使用object和Object 因为太广泛了 并且 object很广泛 Object更广泛(含包装类) 但是null和undefined不行
/
/* - 索引签名 对象 [key:string] : any
- 数组两种形式 string[] Array
- 元组写法 [number,...string[]]数组第一数字后可以跟任意个字符串
- 枚举:一组命名的常量 enum 大写名字{} --
- --数字枚举(从0开始索引自动递增可以反向赋值)
- --文字枚举赋值字符串
- 枚举小技巧 使用 const enum Dirct {up,down,left,right} 加一个const的意义在编译js后大大提高开发代码阅读性
/
/* - 联合类型 |
- 交叉类型 & 一般为{xxx,xxxx}
/
/* - 名字首字母大写
- type 名字 = 类型
- interface 名字 {}
/
/* - 如果在定义函数同时就赋予类型void可以实现
- 但是如果在type声明类型后函数定义类型void就无法生效
/
/* - 类内部 子类 外部
- public
- protected
- private
- readonly
- class的修饰符不可以省略哦
/
/* - 抽象类,可以被继承 不能实例化 有普通方法也有抽象方法
- abstract抽象方法也不能调用但是核心是 继承
- 通用接口
- 基础实现
- 关键实现
- 共享代码逻辑
- 与interface的区别
- 都能实现对类的格式定义
- interface只能描述结构,但是抽象类有具体方法和抽象方法
/
/* - 关于类添加类型 使用implements实现接口
- 对象用冒号 函数一样
- 类 、 对象 、 函数、 接口之间 使用和继承
- 接口有合并的定义 同一个接口会自动合并
/
/* - type和interface的区别
- 相同点都能实现对象的类型定义
- 不同点interface更注重类、对象结构的继承合并,type支持联合交叉类型声明,但是不能实现继承和类型合并
/
/* - 泛型:未指定的类型在使用的时候才会明确类型
/
/*
- Object.seal方法封锁
/
/* - type CustomConsta = new (...argus:any[]) => {}
/
/* - 装饰器工厂由上到下
- 装饰器由下到上
*/