Typescript 之接口 interface(详解)

这篇具有很好参考价值的文章主要介绍了Typescript 之接口 interface(详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、interface的基本含义

TS新增了一个重要概念:接口, 分为对象类型接口和函数类型接口

接口可以约束对象,函数,类的结构和类型,是一种代码协作必须遵守的契约

Interface 是一种描述对象或函数的东西。你可以把它理解为形状,一个对象需要有什么样的属性,函数需要什么参数或返回什么样的值,数组应该是什么样子的,一个类和继承类需要符合什么样的描述等等。接下来具体讲解对象类型接口、函数类型接口及混合类型接口。

二、对象类型接口

接口中可定义以下属性:

确定属性、可选属性、只读属性、任意属性(可以通过 as 或 [propName: string]: any 来制定可以接受的其他额外属性)

这里我们举得例子是在vue3中实现的:

interface Person {
      age: number,// 确定属性
      name?: string,// 可选属性(加问号即可)
      [propName: string]: any,// 任意属性
      readonly sex: string,// 只读属性
}
// 使用接口
const p = ref<Person>({
      age: 20,// 确定属性,不写会报错
      sex: '女',// 只读属性也是确定属性,不写会报错
      label1: '班花',// 任意属性1
      label2: '165',// 任意属性2
})

三、函数类型接口

Interface 还可以用来规范函数的形状。Interface 里面需要列出参数列表返回值类型的函数定义。写法如下:

  • 定义了一个函数接口
  • 接口接收三个参数并且不返回任何值
  • 使用函数表达式来定义这种形状的函数
// 函数类型接口
interface Func {
      // 定于这个函数接收两个必选参数都是 number 类型,以及一个可选的字符串参数 desc,
      // 这个函数不返回任何值
      (x: number, y: number, desc?: string): number
}
// 使用
const sum: Func = function (x, y, desc = '') {
      // 等价于const sum: Func = function (x: number, y: number, desc: string): void {
      console.log(desc, x + y)
}
console.log(sum(1, 2))

四、类 interface

Interface 也可以用来定义一个类的形状。需要注意的是类 Interface 只会检查实例的属性,静态属性是需要额外定义一个 Interface;

定义类时,可以使类去实现一个接口

实现接口就是使类满足接口的要求

// 接口继承接口:继承一个新的接口或者类,从父类或者接口继承所有的属性和方法
// 不可以重写属性,但可以重写方法 
interface classPerson extends Person1 {
      //在继承的基础上新找了个了一个teach方法,且返回值是string类型
      teach(): string;
}
// 类实现接口implements:实现一个新的类,从父类活接口实现所有的属性和方法,
// 同时可以重写属性和方法,包含一些新的功能
class classPerson2 implements Person1 {
      age = 20
      name = 'suosuo'
      sex = '女'
      say() {
            return '我的全名是小锁'
      }
}

五、混合类型的 Interface

混合类型的接口就是使用同一个 Interface 来描述函数或者对象的属性或方法。文章来源地址https://www.toymoban.com/news/detail-498239.html

// 混合类型接口
interface MixType {
      // 如果只有这么一个,那么这个接口是函数接口
      (x: number, y: number): number,
      // 还含有其他方法,那么这个接口就是混合接口
      add(x: number, y: number): number,
      // 还有另一个方法
      log(): void,
      (): void
}
// 调用
function sum() {
      let sum: MixType = (() => { }) as MixType;
      sum.add = (x: number, y: number) => { return x + y }
      sum.log = () => { }
}

const isShowModal = ref(false)
function open() {
      isShowModal.value = true
}

六、总结

  • 接口就是用来定义一个类结构,定义一个类中应该包含哪些属性和方法,同时接口也可以当成类型声明去使用
  • 接口中的所有的属性都不能有实际的值
  • 接口只定义对象的结构,而不考虑实际值
  • 在接口中所有的方法都是抽象方法

到了这里,关于Typescript 之接口 interface(详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Typescript - 通俗易懂的 interface 接口,创建接口 / 基础使用 / 可选属性 / 只读属性 / 任意属性(详细教程)

    在面向对象语言中,接口是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类去实现。 TypeScript 中的接口是一个非常灵活的概念,除了可用于 对类的一部分行为进行抽象 以外,也常用于对「对象的形状(Shape)」进行描述。 ​TypeScript 的核心原则之一是对值所

    2023年04月15日
    浏览(50)
  • typescrip接口 interface详解,以及ts实现多态

    当一个对象类型被多次使用时,一般会使用接口(interface)来描述对象的类型,达到复用的目的 示例如下 当一个对象类型被多次使用时,可以看到,很明显代码有大量的冗余 这个时候可以将这个对象定义为接口,以进行复用,可以看到,这样代码就少了很多冗余 使用interface来声明

    2024年02月19日
    浏览(34)
  • TypeScript的interface

    目录 一、基本使用 二、interface重名、重合 三、任意key 四、interface的? 五、interface的readonly 六、interfacec的接口继承 七、interface定义函数 总结: 变量a这个对象必须有name和age这两个属性,并且他们的类型分别是string和number, 这都相当与给变量a声明了一个指定的类型A  总结:

    2024年02月09日
    浏览(38)
  • typescript中type、interface的区别

    一、概念定义  interface:接口 在TS 中主要用于定义【对象类型】,可以对【对象】的形状进行描述。 type :类型别名 为类型创建一个新名称,它并不是一个类型,只是一个别名。 二,区别 interface: interface 用来定义一个类结构,可以声明多个 使用interface声明,可以被继承扩

    2024年02月08日
    浏览(34)
  • typescript中interface和type的区别

    在TypeScript中,interface和type都用于定义类型,但它们有以下区别: 语法 interface使用interface来定义类型,而type使用type来定义类型。 定义方式 interface 可以通过继承其他interface来扩展自身的属性和方法,也可以多次声明同名的interface,它们会自动合并成一个接口。

    2024年02月16日
    浏览(46)
  • TypeScript中 interface 和 type 的区别

    区别1 使用 interface 和 type 都是表示给定数据结构的常用方法。 定义的方式略有不同。 type 定义的时候有 “=” 符号 区别2 interface 可以多次声明同一接口。它们将合并在一起形成一个接口定义。 type 只能声明一次。 interface:可以多次声明,并最终可共同复用; type:再次声明

    2024年02月14日
    浏览(35)
  • 在 TypeScript 中 interface 和 type 的区别

    在 TypeScript 中, interface  和  type  都用于定义自定义类型,但它们有一些区别: 语法风格: interface  使用  interface  开头,而  type  使用  type  开头。例如: 扩展和实现: interface  可以通过继承或合并来扩展其他接口,并支持类实现。而  type  在定义类型

    2024年02月13日
    浏览(33)
  • 【TypeScript】TS中type和interface在类型声明时的区别

    🐱 个人主页: 不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏: vue3+vite+typeScript从入门到实践 📢 资料领取:前端进阶资料可以找我免费领取 🔥

    2023年04月26日
    浏览(61)
  • 深入理解 TypeScript 的 type 以及 type 与 interface 和 class 的区别

    TypeScript 是一种强类型的 JavaScript 超集,它为 JavaScript 提供了静态类型系统。在 TypeScript 中,我们可以使用 type 、 interface 和 class 为数据定义类型。本文将重点介绍 type 的作用以及它与 interface 和 class 的区别。 type type 是 TypeScript 中用于定义类型别名、联合类型、交叉类型等复

    2024年02月03日
    浏览(39)
  • Golang 接口(interface)

    原创比较累,希望大家能点点赞,对我的支持。你们的支持,就是我的动力。 1. 接口实现 在 Go 中,接口是一种抽象类型,它定义了一组方法签名,但没有实现。接口用于描述对象应该具有的方法集合,而不是具体的实现方式。 接口的定义使用 `type` 和 `interface` 。例如

    2024年02月05日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包