Typescript - 接口

原文:TypeScript基本知识点整理

 

零、序:

  接口定义:接口是对传入参数进行约束;或者对类里面的属性和方法进行声明和约束,实现这个接口的类必须实现该接口里面属性和方法;typescript中的接口用interface关键字定义。

  接口作用:接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。typescrip中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类等。
 

一、属性接口

  对传入对象的约束,形式上很像 json 对象:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface Sx {
    name : string
    age : number
}
 
function f8(peop:Sx) {
    //name age 必须传递
    console.log(peop)
}
 
const obj = {
    name : 'liu',
    age : 25
}
f8(obj)

  注意

  1. 不允许添加接口中未定义的属性;

 

二、函数类型的接口

  对方法传入的参数和返回值进行约束

1
2
3
4
5
6
7
8
9
interface Sta {
    (difang: string, todo: string): string
}
 
let play: Sta = (difang: string, todo: string): string => {
    return `我们去${difang}吃${todo}`
}
 
console.log(play('灞桥', '吃烧烤'))

 

三、可索引的接口

  对索引和传入的参数的约束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//对数组的约束
interface UserArr {
    //索引为number,参数为string
    [index: number]: string
}
 
const arr: UserArr = ['a', 'b']
console.log(arr)
 
//对 对象的约束
interface UserObj {
    [index: number]: number
}
 
const obj1: UserObj = { 2:1, 3:4 }
console.dir(obj1)

 

四、类的类型约束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
interface Anmal {
    //对类里面的属性和方法进行约束
    name: string
    eat(food:string): void
}
// 类实现接口要用implements , 子类必须实现接口里面声明的属性和方法
class Laoshu implements Anmal{
    name: string
    constructor(name: string) {
        this.name = name
    }
    eat(food:string): void {
        console.log(`${this.name}吃${food}`)
    }
}
const lao: Laoshu = new Laoshu('老鼠')
lao.eat('粮食')

 

五、接口继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
interface Anmal {
  //对类里面的属性和方法进行约束
  name: string
  eat(food:string): void
}
//实现LaoHu的这个接口,必须也要实现LaoHu继承的Anmal接口中的方法
interface LaoHu extends Anmal{
  say (sa : string) : void
}
//继承并实现接口
class XiaoLaoHu implements LaoHu{
  name : string
  constructor (name : string) {
      this.name = name
  }
  eat (food : string) : void {
      console.log(`${this.name}吃${food}`)
  }
  say(sa: string): void {
      console.log(`${this.name}说${sa}`)
  }
}
 
const xiao : XiaoLaoHu = new XiaoLaoHu('老虎')
xiao.eat('肉')
xiao.say('你好')

 

posted @   shiweiqianju  阅读(172)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示