TS入门——04.接口

本文详细介绍了 TypeScript 中接口的概念,包括如何使用 interface 定义抽象方法,如何约束对象和数组,以及接口在类约束和函数约束中的应用。此外,还探讨了接口的继承机制,帮助读者全面掌握接口在软件开发中的作用。
摘要由CSDN通过智能技术生成

ts接口概念

接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都是抽象的,需要由具体的对象去实现,简而言之接口用来定义标准,定义了行为的规范
接口使用interface来定义,如下

interface my_interface { 内容 }

例子:

interface myName {
  firstName: string;
  secondName: string;
}
// myName接口表示应用了该接口的数据都同时满足其中的两个属性的存在
var obj: myName = {
  // firstName: 123 // 报错必须满足接口中的数据类型
  firstName: 'lu',
  secondName: 'cky'
}

console.log(obj.firstName) // lu
console.log(obj.secondName) // cky

接口约束对象和数组

约束对象和数组的接口相似,其实本质上都是约束属性名和键值

// 定义数组约束
interface arrRules {
  [index: number]: string // 表示索引只能是数字类型,元素只能是字符串类型
}
// 定义对象约束
interface objRules {
  [index: string]: number // 表示键名只能是字符串,值只能是数字
}


const arr1: arrRules = ['lucky', 'shuaige']
// const arr2: arrRules = ['lucky', 'shuaige', 1, 4, true] // 报错 包含非字符串元素
const obj1: objRules = {
  max: 120,
  age: 18
}
const obj2: objRules = {
  // name: 'lucky', // 报错 键值为字符串,不符合定义的接口规则
  age: 18
}

接口约束函数

接口约束函数主要是约束函数的参数和函数的返回值,例:

// 定义函数约束接口
interface fnRlue {
  (name: string, age: number): String //表示以此接口定义的函数必须传俩个规则的参数, 返回的类型必须为是字符串类型
}

var fn: fnRlue = function(name: string, age: number): string {
  return name + '你' + age + '岁'
}
console.log(fn('lucky', 18)) // lucky你18岁

接口约束类

使用接口来约束类的属性和方法,例

interface classRules {
  name: string,
  sayHi(age: number): string // 表明类必须要有name属性和sayHi方法,sayHi方法必须传age数字类型参数且返回字符类型数据
}

// 使用implements关键字
class Person implements classRules {
  name: string
  constructor(name: string) {
    this.name = name
  }
  sayHi(age: number) {
    return this.name + age
  }
}

var zhangsan = new Person('lucky')
console.log(zhangsan.name) // lucky
console.log(zhangsan.sayHi(100)) // lucky100

接口的继承

接口也使用extends关键字来实现继承,语法如下

interface 子接口 extends 父接口

子接口会把父接口的约束继承过来,使用子接口来约束的对象必须同时满足父接口和子接口的约束条件,例:

interface father {
  name: string // 必须要有name属性
}
interface son extends father {
  age: number // 必须同时拥有name和age属性
}


var obj1: father = {
  name: 'zhangsan'
}
/*
下面定义的obj2不满足约束,定义语法报错,应该定义好父接口的name属性,如obj3
var obj2: son = {
  age: 18
}
*/
var obj3: son = {
  name: 'wangwu',
  age: 18
}

上面实例中子接口只继承了一个父接口,属于单继承
而子接口继承多个父接口则叫做多继承,同样的,使用该子接口定义的对象必须满足继承的所有父接口和自身里面的约束,例:

interface father {
  name: string // 必须要有name属性
}
interface mother {
  age: number // 必须要有age属性
}

interface son extends father, mother {
  sex: string // 必须同时拥有name,age,sex属性
}

var obj: son = {
  name: 'zhangsan',
  age: 22,
  sex: '男'
}

以上便是ts接口的知识了,loading…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值