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 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( '你好' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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,欢迎大家贡献代码