typescript学习笔记3-接口(1)

为什么需要接口

上节最后有函数/方法的参数声明,倘若有参数,如:

function func1({ x = 0, y = 0, z = 0 } : { x : number, y = .....}): xx {
  xxx
}

那么就。。。

这个时候就用到了接口,接口的作用是描述结构的形态。

“总结”

如果用接口改写上述代码:

interface point2d {
    x : number
    y : number
}

interface point3d extends point2d {
    z : number
}

function func({ x: 0, y: 0, z: 0}: point3d): string {
    xxx
}

比起上面一个一个写就显得清爽了许多。另外,从例子中可以看出,接口可以通过extnds关键字扩展,扩展后不仅拥有以前的那些字段,还有新加的字段。

描述类

通过关键字implements去描述类。

interface Db {
    readonly host: string
    port: number

    connect(username: string): void
}

class MySQL implements Db {
    readonly host: string
    port: number

    constructor(host: string, port: number) {
        this.host = host
        this.port = port
    }

    connect(uname: string): void {
        console.log(`${uname}正在连接${this.host}:${this.port}`)
    }
}

此外,类的方法也可以写到接口里。

属性修饰符

位置可以在上面的例子里看到

readonly:字面意思。
private和protected:前者似有变量,只有自己内部方法可以访问,不可被继承,而protected可以被继承,可以理解成私房钱和姓氏。
public:和不写一样。
可选属性:在接口属性名后加一个问号,表示可传可不传。

interface Person {
    IdCard: string
    name?: string
}

let person: Person = { IdCard: 'xxxxx' } // 不报错

如果设定一接口,但是我临时想传更多的属性

可以通过:

interface Person {
    IdCard: string
    name?: string
    [propName: string]: any
}

[]里限定里属性名的类型,括号后的any限定了属性的类型。其中propName是可以随便改的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,242评论 6 13
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,303评论 9 118
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,325评论 1 44
  • 不要离开,我会很想你。 2017年8月18日 星期五 雨 亲爱的,今天是我们在一起的第582天,也是胖轩出生后的第...
    不知疲倦的胖子阅读 281评论 0 0