typescript(六)ts中的接口

ts中的接口和类型别名很相似,从不同中学习认识接口。

两者的区别

接口只适用于对象类型定义,无论是单个对象还是函数参数为对象,数组元素为对象的定义,然而类型别名适用于任何变量,并且可以是基础类型。可以把这两个重复的类型注解,定义成统一的接口。

1.接口的应用:

interface Iob {
    unname: string,
    age: number
}
// 单个变量接口的应用
const objA: Iob = { unname: '小红', age: 16 }
// 函数中的参数为对象时接口的应用
function fnobA(girl: Iob) {
    return girl.unname
}
fnobA({ unname: '小红', age: 16 })
// 数组元素为对象时接口的应用
const iarrobjA: Iob[] = [{ unname: '小红', age: 16 }]

2.类型别名的应用

// 类型别名定义对象类型
type Tob = {
    unname: string,
    age: number
}
const objB: Tob = { unname: '小红', age: 16 }
// 类型别名定义字符串类型
type Tstr = string
const tstr: Tstr = '666'

总结:接口只能定义静态类型中的对象类型,类型别名的应用可以定义任何静态类型

ts接口中属性可以设置非必选项

interface Iob1 {
    unname: string,
    age: number,
    bust?: number
}
// bust没有传
function fnobB(girl: Iob1) {
    return girl.unname
}
fnobB({ unname: '小红', age: 24 })
// bust有传
function fnobC(girl: Iob1) {
    if (girl.bust) {
        return girl.bust
    }
    return girl.unname
}
fnobC({ unname: '小红', age: 24, bust: 90 })

ts接口中属性的名称与值的定义(不限制参数个数)

interface Iob2 {
    unname: string,
    age: number,
    bust?: number,
    [propname: string]: any
}
const Iobj1: Iob2 = { unname: '小红', age: 24 }
const Iobj2: Iob2 = { unname: '小红', age: 24, bust: 40 }
const Iobj3: Iob2 = { unname: '小红', age: 24, bust: 40, work: true, qqname: 'seabiscuit' }

接口里的方法

interface Iob3 {
    unname: string,
    age: number,
    bust?: number,
    [propname: string]: any,
    say(): string,
}
const girl: Iob3 = {
    unname: '小红',
    age: 24,
    bust: 40,
    work: true,
    qqname: 'seabiscuit',
    say() {
        return '666'
    }
}

接口的继承

interface Inew1 {
    name: string
}
interface Inew2 extends Inew1 {
    work: boolean
}
const newobj: Inew2 = { name: '小红', work: true }

接口在类中的使用(使用接口可以将类进行约束)

class cgirl implements Iob3 {
    unname: string;
    age: number;
    bust: 30;
    say() {
        return '666'
    }
}

下一篇: typescript(七)ts中的类class

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值