1, 特点:
a: 面向对象的编程(oop), 封装, 集成和多肽, 比如说类/接口和模块
b: 嵌入es6的新特性, 提升代码的简洁性及可读性
c: 跨平台, 支持window/macOs/linux
2, 优势:
a: 可读性强,复用性高,语法混乱较js更少
b: 调试更便捷,因为是在代码编译之前就会报出相应的错误
c: 跨平台
3, 接口: interface关键字, 常用于定义变量或者函数参数及返回值校验
4, 类: 相关对象的属性/方法的集合,可以用继承和实现. 关键字有public. private. protected
a: public: 在类里边/子类中/类外边(实例化)进行访问
b: private: 在类里边/子类中进行访问
c: protected: 在类里边进行访问
d: 类也可以当作接口使用, 引用官方文档的一句话就是: 类定义会创建两个东西, 类的实例类型和一个构造函数。 因为类可以创建出类型,所以你能够在允许使用接口的地方使用类。
5, 接口和类的关系:
a: 接口可以继承接口, 接口可以继承类
b: 类可以继承类, 但是不能继承接口
c: 类可以实现接口, 类可以实现类
d: 接口不可以实现接口,也不能实现类
6, 模块: 变量. 函数. 类. 接口的集合
7, 命名空间: 关键字namespace, 为避免项目过程中, 类. 接口或者方法名相互冲突或者被相似的名称所迷惑,或者文件中的方法存在依赖关系的时候文件过大,导致项目可读性降低,代码质量下降所产而产生
基本语法: (第二种会更常用一些, 类似于module)
namespace Name {
export class Http {}
} 或者
export namespace Name {
export class Http()
export function getData() {}
}
* **: namespace
下还有export
, export
在这里用来表示哪些功能是能够外部访问的
第一种:
第二种: (更常用)
** 文件太大,而需要做多分离处理, 可以参考ts官方文档-namespace多文件分离
8: 类型断言 as, 及mixin
类型断言对运行时没有影响,仅由编译器使用。Mixin 本质上是在相反方向上工作的继承 (下一篇文章单独抽离出来讲解)
9: 子类调用基类构造函数, 关键字super使用
10: Ts中的getter/setter:
根据需要委派对私有变量的不同级别的访问。Getters 允许你引用一个值但不能编辑它。Setter 允许你更改变量的值,但不能查看其当前值
11: Ts中的重载:
两个名称相同但参数/返回类型不同的函数, 两个函数必须接受相同数量的参数(ts多态的一种),在调用时,会根据参数及返回类型的不同,而执行对应的函数内容.
12: 装饰器:
通过在不同位置使用@符号+装饰器名称(类似函数), 来更改相对应的状态(目前处于实验性阶段-将来可能会改变,谨慎使用, 后面会单独抽出来进行讲解)
如有不够严谨的地方,还望指正包涵,谢谢