课程名称:GO开发工程师
课程章节:第6章:TS之面向对象:接口、类、泛型
课程讲师: ccmouse
课程内容:
一. 接口
接口:描述一个类型
示例错误:报错提示缺少某个字段 -> ts中的接口不需要实现,只需要符合interface描述的类型就行
示例错误:只是描述 emp3 是Employee类型,并没有给定具体的值
接口语法:
interface大多数情况下是用于定义字段,定义方法时考虑使用类定义或者在对象作为参数传递时会用到函数类型的字段
interface Employee {
readonly firstname: string, // 只读字段
name: String, // 接口里加, ; 或者不加都可以
salary: number,
bonus?: number, // 可选参数
read
updateBonuns(p: number): void // 方法
}
二. 接口高级技巧
示例错误:name是可选字段,值有可能为空-> 用?链式调用可选字段
代码示例:
interface Employee {
salary: number,
name?: {
first: string,
last: string,
},
bonus?: number,
}
function hasBadName_Error(e: Employee) {
return e.name.first.startsWith('AAA') // 报错
}
function hasBadName_Correct(e: Employee) {
return e?.name?.first.startsWith('AAA') // 可选
}
function hasBadName_Force(e: Employee) {
return e!.name!.first.startsWith('AAA') // 一定有值 (非空断言)
}
接口的拓展:关键字extends
类型断言:as 关键字
//判断是否是类型WxButton
function isButton(e:WxButton | WxImage): e is WxButton{
//判断类型,最终还是通过属性
return (e as WxButton).onClick !== undefined
}
课程收获:
interface:类型描述
设计接口应当尽量规范化、简单化,避免返回多种类型增加逻辑复杂度(类型并、类型判断、类型断)