课程名称
课程章节
第2章 TypeScript 基础语法入门
- 2-13 对象类型的补充学习
课程讲师
课程内容
- 对象类型
- 对象类型和对象解构的语法
- interface中的readonly只读属性
- 如何给对象扩展属性
- 对象类型的继承
- 多个对象类型同时进行继承
- 交叉类型
课程收获
对象类型和对象解构的语法
这么写有问题,showPerson函数,接收一个对象进来,有两个属性,都有默认值。冒号nick和old,实际代表对象结构后变量换了一个名字。
这样就没问题了。
个语法与ts无关,是es6语法做对象解构的时候,可以把参数名称换掉。
注意:经常会把这种es6语法与ts的对象类型混为一谈。
如果想给对象进行类型定义 =>
这个时候不是别名就报错了。
成功
interface中的readonly只读属性
定义一个Person类的类型定义,之后初始化它的对象后,对象属性后面是可以修改的。
假如要求属性不能修改了,则可使用readonly属性,一旦修改就会报错了。
如何给对象扩展属性
interface定义一个ArrayObject类,配置一个length属性。
后期还想扩展属性 =》
直接加到对象中会报错。
想约定扩展利用中括号形式,属性名类型和属性值类型定义好即可。
实际0也会被解析成字符串。
属性名类型变为number就会报错了。
实际0可以隐式转换字符串和数字,它与string和number都能匹配上,不过一般而言都会将属性类型为string类型的。
属性类型值还可以加boolean。
对象类型的继承
构建一个基础的Animal类
派生一个dog类,利用extends语法。
dog中不写name则会报错。
对象继承可以帮助我们少写很多代码,加上一些理解,能够更好的语义化。
多个对象类型同时进行继承
要定义一个对象,它里既有Circle类型定义,又有Colorful类型定义。
单独写一个类型约束肯定报错。
可以借助interface和extends继承,一个类继承多个类型 =》
交叉类型
利用type的交叉类型预发,可以替换多个对象类型同时进行继承。
对象中只写一个属性也会报错。
note:去应对复杂场景的继承,还是优先使用interface的语法,更容易理解,扩展性更好,也利于类型推断。