【TS】Interface接口

Interface定义

在TypeScript里,接口的作用就是定义Object类型,非常灵活有以下功能:

  1. 对对象(object)的形状(shape)进行描述。如属性、方法;
  2. 对类(class)进行抽象。在面向对象语言中较为常见;
  3. Duck Typing(鸭子类型)。如果某东西具有鸭子的特性,就可以将它看作鸭子,是动态编程语言中对象的一种推断策略,更关注对象如何被使用,而不是对象的类型本身。
interface IPerson {
    readonly id: number; //readonly 只读属性
    name: string;
    age?: number; // ?标识符表示是可选属性
    [propName: string]: any; //预留属性
    say(): string; // 返回值类型
}

let viking: IPerson = {
    id: 1,
    name: 'viking',
    age: 20,
    say() {
        return 'say hello'
    }
}
viking.id = 2 // 试图改写只读属性id将为语法报错

class 应用 interface

类应用接口,一个类应用接口之后,必须具备接口里应有的属性和方法。

class User implements Person {

    name: 'lily',
    say() {
        return 'hello'
    }

}

interface 的继承

interface Person {
    name: string;
    age?: number;
    [propName: string]: any;
    say(): string;
    teach(): string;
}
interface Teacher extends Person {
    teach(): string
}

let viking: Teacher = {
    name: 'lily',
    say(){
        return 'hello'
    },
    teach() {
        return 'tech'
    }
}

用interface定义函数类型

interface Sayhi {
    (word: string): string. // (参数:类型):返回值类型
}

const say: Sayhi = (word: string) => {
    return word
}

interface 和 type(类型别名) 

type可以直接定义基础类型,interface必须定义对象或方法。

interface可以定义属性、方法、使用propName预留属性,可以使用 readonly 和 ? 标识只读和非必填。另外,Interface可继承,可以定义具体的方法类型,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值