TypeScript 接口协议(interface)详细分析

简介: TypeScript 接口协议(interface)详细分析
  • interfacets 的含义:只声明成员方法,不做实现,定义了这个接口会有什么,但是没有告诉你具体是什么,可以用来约束一个函数,对象,以及类的结构和类型。
  • 类可以被多个接口协议约束,类也可以作为接口使用,也就是 implements 后面可以添加 单个或多个接口与类,文章尾部有案例。
    格式:class 类名 implements 接口名, 接口名, 类名 ... {}
    例如:class Person implements Action, Info {}
  • 接口支持多继承
    格式:interface 接口名 extends 接口名, 接口名, 类名 ... {}
    例如:interface Person extends Action, Info {}
  • 对象类型接口
// 定义成员接口
interface Member {
  // 成员ID
  id: number,
  // 成员名称
  name: string
}
// 定义团队接口
interface Team {
  // 成员列表
  members: Member[]
}
// 发送团队用户 
function sendData(team: Team) {
  team.members.forEach(item => {
    console.log(item.id, item.name)
  })
}
// 模拟数据
let team = {
  members: [
    { id: 1, name: 'dzm' },
    { id: 2, name: 'xyq' }
  ]
}
// 发送数据
sendData(team as Team)
  • 函数类型接口
// 定义函数类型接口(两种方式)
// 第一种
interface Calc {
  (x:number, y:number):number
}
// 第二种
// type Calc = (x:number, y:number) => number
// 加法
let add:Calc = (x, y) => { return x + y }
// 减法
let subtr:Calc = (x, y) => { return x - y }
// 输出
console.log(add(1, 2)) // 3
console.log(subtr(4, 3)) // 1
  • 混合类型接口
// 定义混合类型接口
interface Mix {
  // 初始化构造方法
  (): void,
  // 消息
  msg: string,
  // 发送消息方法
  send(): void
}
// 初始化
function initMix () {
  let mix:Mix = (() => {}) as Mix
  mix.msg = 'dzm'
  mix.send = () => {
    console.log(mix.msg)
  }
  return mix
}
// 使用
let mix = initMix()
mix.send() // dzm
// 定义成员接口
interface Member {
  // 成员ID(只读)
  readonly id: number,
  // 成员名称(必须有)
  name: string
  // 成员名称(?: 可有可无)
  age?: number
}
  • 接口的实现(implements)与继承(extends)
// 定义行动接口
interface Action {
  // 跑起来
  run():void
}
// 定义信息接口
interface Info {
  // 用户名称
  name: string
}
// 定义人接口,继承上面接口
interface Person extends Action, Info {
  // 个人ID
  id: number
}
// 定义一个类,实现上面 Person 接口
class Person1 implements Person {
  id: number
  name: string
  run(): void {
    console.log(`${this.name} 跑起来了`)
  }
}



相关文章
|
3月前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
47 1
|
25天前
|
JavaScript 前端开发 安全
JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择
本文深入探讨了JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择。JavaScript以其灵活性和广泛的生态支持著称,而TypeScript通过引入静态类型系统,提高了代码的可靠性和可维护性,特别适合大型项目。文章还讨论了结合使用两种语言的优势,以及如何根据项目需求和技术背景做出最佳选择。
44 4
|
2月前
|
JavaScript 前端开发 Java
TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第10天】TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
3月前
|
数据采集 JavaScript 前端开发
使用 TypeScript 接口优化数据结构
使用 TypeScript 接口优化数据结构
|
4月前
|
开发框架 前端开发 JavaScript
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
|
5月前
|
JavaScript 开发者 索引
TypeScript接口与类型别名:深入解析与应用实践
【7月更文挑战第10天】TypeScript的接口和类型别名是定义类型的关键工具。接口描述对象结构,用于类、对象和函数参数的形状约束,支持可选、只读属性及继承。类型别名则为复杂类型提供新名称,便于重用和简化。接口适合面向对象场景,类型别名在类型重用和复杂类型简化时更有优势。选择时要考虑场景和灵活性。
|
4月前
|
JavaScript 前端开发 API
Vue 3+TypeScript项目实战:解锁vue-next-admin中的全局挂载对象接口,让跨组件共享变得高效而优雅!
【8月更文挑战第3天】在构建Vue 3与TypeScript及vue-next-admin框架的应用时,为提高多组件间共享数据或方法的效率和可维护性,全局挂载对象接口成为关键。本文通过问答形式介绍其必要性和实现方法:首先定义全局接口及其实现,如日期格式化工具;接着在`main.ts`中通过`app.config.globalProperties`将其挂载;最后在组件内通过Composition API的`getCurrentInstance`访问。这种方式简化了跨组件通信,增强了代码复用性和维护性。
66 0
|
5月前
|
JavaScript 前端开发 程序员
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
Typescript 【实用教程】(2024最新版)含类型声明,类型断言,函数,接口,泛型等
88 0
|
5月前
|
JavaScript Java 索引
TypeScript(四)接口
TypeScript(四)接口
50 0
|
5月前
|
JavaScript API
TypeScript 项目中接口的统一管理
TypeScript 项目中接口的统一管理
68 0