typeScript的接口是什么,咱们来简单上手!

接口的概念

在现实中,有很多接口,usb,手机上的。。。

在开发中,和后端联调的时候,也会调用接口. 所以接口在生活中出现的频率还是很高的😃

在ts中的接口:是用于约束对象函数的一种标准👋

扩展类型

在ts中,除了基本类型,还有一些自己本身的扩展类型:TS也属扩展类型🍖

  • 类型别名
  • 枚举
  • 接口

接口约束对象

  • 写法
    interface User {
      name: string;
      age: number;
    }
    
    const use: User = {
	name: '张三',
	age: 18,
    };

接口约束函数

  • 写法
   // 在对象中书写
    interface User {
      name: string;
      age: number;
      // 写法一
      sayHello: () => void;
      // 写法二
      sayHello(): void;
    }
    
    // 直接定义
    interface age { //此时的{}代表定界符
      (n: string): boolean
    }

    const use: age = () => {
      return true
    }

    use("123") // 如果传递非string参数,会报错

接口的有意思的点-继承🦋

接口的特殊之处在于, 它可以继承, 实现多接口的组合, 子接口不能覆盖父接口的成员

  • 继承单个
interface A {
  T1: number
}

interface B {
  T2: string
}

interface C extends A {
  T3: boolean
}

let user: C = {

} // 此时提示
let user: C  
类型“{}”缺少类型“C”中的以下属性: T3, T1
  • 继承多个
interface A {
  T1: number
}

interface B {
  T2: string
}

interface C extends A,B {
  T3: boolean
}

let user: C = {

} // 此时提示
let user: C  
类型“{}”缺少类型“C”中的以下属性: T3, T1, T2
  • 重写继承父接口的成员-会提示错误🎅
interface C extends A,B {
  T3: boolean,
  T1: boolean
} // 此时提示错误
interface C

接口“C”错误扩展接口“A”。  
属性“T1”的类型不兼容。  
不能将类型“boolean”分配给类型“number”

和类型别名的区别

使用类型别名可以实现类似的组合效果, 需要使用&符, 它叫做交叉类型, 但是区别于接口的一点是:交叉类型会把相同的类型进行交叉😯

  • 写法
    type A = {
       T1: number;
    };

    type B = {
       T2: string;
    };

    type C = {
       T3: boolean;
    } & A & B;  //使用&,实现类似的继承

    let use: C = {
      T3: true
    } // 提示缺少T1和T2
  • 交叉相同类型
type C = {
   T3: boolean;
   T1: string
} & A & B;  

let use: C = {
  T3: true,
  T2: '123',
  T1: null
} // 不能将类型“null”分配给类型“never”

交叉并重写了T1成员, 发现在赋值的时候变成了never类型,导致无法进行赋值了, 这是棘手的问题需要避免!🙁

编译结果

和类型别名一样,interface定义的内容不会出现在编译结果中

建议

会发现和类型别名(type)定义的形式很像, 并且大部分的第三方库都使用interface,所以优先建议使用interface🤨

掘金:https://juejin.cn/post/7154671107948150815

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端冲刺

1毛也是爱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值