「TypeScript」入门进阶(三)✈️---类与接口

简介: 「TypeScript」入门进阶(三)✈️---类与接口

🎉 前言


  • 虽然之前有学过TypeScript但是平时业务上面都还是用JavaScript来开发导致逐渐对TypeScript生疏了。
  • 借此更文活动的机会再来一起学习一下TypeScript的知识吧。
  • 在之前的文章中我们TypeScript的基础知识过了一遍,是不是发现其实也不会很难呢。
  • 本文也是TypeScript进阶篇的第三篇,讲的是类与接口的那些事,关于基础篇可以看我之前分享的文章喔~
  • 本文大概1300+字,阅读可能需要十分钟~ 🥂


🌋 TypeScript类的实现(implement)


  • 在我们之前学习的类中,每个类只能继承一个类,但有没有这样一种情况,不同的类之间有共同的属性或方法。
  • 假设一个奶茶店要做一杯冰拿铁冰奶茶,我们都需要给它加糖加冰,这时候如果使用类与类继承的方式可能会不太方便甚至很难完成,这时候我们可不可以跟之前学习的接口一样规定一个类的特性。
  • 我们还是可以选择接口来规定一个类的形状,但类与接口的连接不可以使用:了,要使用implement实现。
  • 创建一个interface规定一个形状。
  • 创建一个类实现(implement)这个interface
  • 类中需要包括interface中的属性和方法
interface makeMilk {
  addIce():void
  addSugar():void
}
class MilkTea  implements makeMilk {
  addIce() {
      console.log('奶茶加冰');
  }
  addSugar(){
    console.log('奶茶加糖')
  }
}
class Latte implements makeMilk {
  addIce() {
      console.log('奶茶加冰');
  }
  addSugar(){
      console.log('奶茶加糖')
  }
}
let milk=new MilkTea;
let latte=new Latte;
milk.addIce()//奶茶加冰
milk.addSugar()//奶茶加糖
latte.addIce()//奶茶加冰
latte.addSugar()//奶茶加糖
复制代码
  • 在上面这个例子中我们可以看到制作一杯奶茶和拿铁都需要加糖加冰这个操作,而这个操作定义在interface中,我们可以通过实现接口来获取这两个方法。
  • 最后再将两个奶茶类拿铁类进行实例化,实例对象就可以使用这些方法啦~
  • 当然一个类也可以实现多个接口interface
interface Ice {
  addIce():void
}
interface Sugar {
  addSugar():void
}
class MilkTea  implements Ice,Sugar {
  addIce() {
      console.log('奶茶加冰');
  }
  addSugar(){
    console.log('奶茶加糖')
  }
}
let milk=new MilkTea;
milk.addIce()//奶茶加冰
milk.addSugar()//奶茶加糖
复制代码
  • 如上就是一个奶茶类同时实现了加冰加糖的接口。


🗻 TypeScript接口继承接口


  • 跟类继承类一样,相同的对象难免是可以继承的,接口也可以继承接口,连接方式也是使用extends
interface addIce{
  ice:string
}
interface addSugar extends addIce{
  sugar:string
}
let milk:addSugar={
  ice:'少冰',
  sugar:'半糖'
}
复制代码
  • 上述例子中定义了两个接口分别是addIceaddSugar,而addSugar继承了addIceice属性,所以在使用addSugar接口的时候形状必须一致。
  • milk变量中因为使用了addSugar接口,所以属性如果不符合形状就会报错。


🏖️ TypeScript接口继承类


  • TypeScript中我们可以使用接口来继承类。
class MilkTea {
  ice:string
  sugar:string
  constructor(ice:string,sugar:string){//constructor是一个构造方法,用来接收参数
      this.ice = ice;
      this.sugar = sugar;
  };
}
interface doSthing extends MilkTea{
}
let milk:doSthing={
  ice:'少冰',
  sugar:'半糖'
}
复制代码
  • 在上面的例子中,我们的interface接口规定了形状,而这个形状本身是没有东西的,但是它继承了MilkTea类的icesugar属性,所以就规定了使用这个接口interface的变量需要有icesugar属性。
  • 如上我们的milk给了它一个接口doSthing,所以这个变量需要有icesugar属性。
  • 有同学会问了:啊 接口跟类又不是同一种东西那怎么可以继承呢?,虽然这两不是一个东西,但是我们在定义一个class的时候其实也是定义了一种类型。
  • 就拿上面的MilkTea类来说,我们创建这个类的时候其实也是创建了一个MilkTea的类型,我们可以这样使用。
class MilkTea {
  ice:string
  sugar:string
  constructor(ice:string,sugar:string){//constructor是一个构造方法,用来接收参数
      this.ice = ice;
      this.sugar = sugar;
  };
}
let milk:MilkTea={
  ice:'少冰',
  sugar:'半糖'
}
复制代码
  • 这样是没有问题的,所以当我们doSthing接口继承时其实是集成了MilkTea这个类型,而这个类型大家是不是觉得很熟悉,他就是interface的写法类似啊,所以我们继承了一个类实际上就是继承了一个接口。
  • 值得一提的是,接口继承类的时候,只会继承它的实例属性和实例方法,继承不了构造函数。


👋 写在最后


  • 本文也算是记录一下TypeScript的学习,接下来我会持续输出TypeScript相关的知识,大家可以一起来学习。
  • 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛


🌅 往期精彩


「TypeScript」入门基础(一)🎯---安装与基础数据类型

「TypeScript」入门基础(二)🎯---联合类型与接口

「TypeScript」入门基础(三)🎯---数组类型与函数类型

「TypeScript」入门基础(四)🎯---类型断言

「TypeScript」入门进阶(一)✈️---类型别名、字符串字面量与元组

「TypeScript」入门进阶(二)✈️--类


相关文章
|
2月前
|
JavaScript
typeScript基础(5)_对象的类型-interfaces接口
本文介绍了TypeScript中接口(interfaces)的基本概念和用法,包括如何定义接口、接口的简单使用、自定义属性、以及如何使用`readonly`关键字定义只读属性。接口在TypeScript中是定义对象形状的重要方式,可以规定对象的必有属性、可选属性、自定义属性和只读属性。
38 1
|
21天前
|
JavaScript 前端开发 Java
TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
【10月更文挑战第10天】TypeScript【接口】超简洁教程!再也不用看臭又长的TypeScript文档了!
|
21天前
|
JavaScript 前端开发
Vue2整合TypeScript:借助vue-property-decorator以类模式编写组件
Vue2整合TypeScript:借助vue-property-decorator以类模式编写组件
104 3
|
5月前
|
JavaScript 前端开发 程序员
TypeScript 类
TypeScript 类
|
1月前
|
JavaScript 前端开发 编译器
【小白入门】 浏览器如何识别Typescript?
【10月更文挑战第1天】浏览器如何识别Typescript?
|
2月前
|
数据采集 JavaScript 前端开发
使用 TypeScript 接口优化数据结构
使用 TypeScript 接口优化数据结构
|
2月前
|
JavaScript
typeScript进阶(13)_类与注意事项(八项特性)
TypeScript的类支持特性包括:构造函数、继承(使用`extends`)、公有/私有/受保护修饰符、只读修饰符、参数属性、存取器(getters/setters)、抽象类(用`abstract`声明)。类可用作类型。
22 0
typeScript进阶(13)_类与注意事项(八项特性)
|
2月前
|
JavaScript 前端开发 编译器
TypeScript,从0到入门带你进入类型的世界
该文章提供了TypeScript的入门指南,从安装配置到基础语法,再到高级特性如泛型、接口等的使用,帮助初学者快速掌握TypeScript的基本用法。
|
3月前
|
开发框架 前端开发 JavaScript
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
在基于vue-next-admin的Vue3+TypeScript前端项目中,为了使用方便全局挂载对象接口
|
4月前
|
JavaScript 开发者 索引
TypeScript接口与类型别名:深入解析与应用实践
【7月更文挑战第10天】TypeScript的接口和类型别名是定义类型的关键工具。接口描述对象结构,用于类、对象和函数参数的形状约束,支持可选、只读属性及继承。类型别名则为复杂类型提供新名称,便于重用和简化。接口适合面向对象场景,类型别名在类型重用和复杂类型简化时更有优势。选择时要考虑场景和灵活性。