一、类
只读属性可以在构造器里赋值,但是赋值之后就不可以修改了;
可以使用访问器来访问私有private的属性;这个比java语言要自己写setNmae()和getName()方法要方便一些,但是都差不多;
二、接口
接口和type都可以实现对象类型的定义,
但是interface可以对同一个名字重复定义并且将同一名字的属性合并,type由于只是个别名所以不可以重复。
推荐使用interface定义对象;
字面量赋值:
ts说白了就是帮助我们进行数据类型检测的,有些时候它的类型检测可能并不智能,这个时候可以使用这种方式跳过它的类型检测;
三、枚举
枚举首先也是一种数据类型, 有点类似字面量类型+联合类型的综合体;
就是我们自定义一些 名称常量等;
但是枚举的可读性非常强,我们可以使用枚举名.属性名;
使用type来定义一个数据类型;
使用enum来定义一个常量集合;
枚举默认按照顺寻有0,1,2,3等值;
四、泛型
4.1什么是泛型?
实际上就是类型的参数化,将我们的类型在定义的时候不要写死,具体是什么类型由调用者传入的参数来决定;
但是又不要用any来定义,如果是any那么以后返回的类型也是any了,但是使用泛型,以后返回的类型就是调用者所传入的;
4.2 类型变量type,将不确定类型使用type这个参数替代
4.3 多个类型,多个参数替代
4.4 接口和类的泛型
除了函数可以使用泛型之外,接口和类在定义的时候,也可以使用泛型;
4.5泛型约束
通过让泛型继承一个接口,而使得这个泛型有了一定的约束,有了传入过来的参数必须要有的属性,变得没那么广泛了;
五、ts的模块化
js有模块化开发,ts也肯定有,并且除了js的esModule方式,还支持CommonJs方式;
5.2类型查找
5.3类型申明
ts使用第三方库、使用文件(图片文件等)一定要在.d.ts文件里有类型申明;
- 内置声明:ts帮助我们申明好了;
- 外部定义申明:我们引入的第三方库会有自己申明好的;或者下载别人神明好的文件;
- 自定义申明: 自己申明,记住,只是申明有这个东西即可,不需要在.d.ts里实现,具体实现应该在其他文件;
如果申明了,才可使用import等方式导入吧;
5.4如何申明?
六、ts.config.json文件