Typescript学习之接口interface举例详解

 更新时间:2024年03月27日 09:36:44   作者:suoh's Blog  
TypeScript是JavaScript的一个超集,主要提供了类型系统和对ES6+的支持,TypeScript的核心原则之一是对值所具有的结构进行类型检查,这篇文章主要给大家介绍了关于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 来描述函数或者对象的属性或方法。

// 混合类型接口
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的文章就介绍到这了,更多相关Typescript接口interface内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • json的结构与遍历方法实例分析

    json的结构与遍历方法实例分析

    这篇文章主要介绍了json的结构与遍历方法,结合具体实例形式分析了json常见的简单与复杂结构表示方法,以及具体的遍历操作实现技巧,需要的朋友可以参考下
    2017-04-04
  • JS实现页面载入时随机显示图片效果

    JS实现页面载入时随机显示图片效果

    这篇文章主要介绍了JS实现页面载入时随机显示图片效果,涉及javascript基于随机数与数组的页面元素动态修改相关操作技巧,需要的朋友可以参考下
    2016-09-09
  • JS查找孩子节点简单示例

    JS查找孩子节点简单示例

    这篇文章主要介绍了JS查找孩子节点,结合完整实例形式分析了javascript节点遍历、查找相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • JS电梯导航的实现示例

    JS电梯导航的实现示例

    本文主要介绍了JS电梯导航的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • JS生成唯一id的多种解决方案(非常实用)

    JS生成唯一id的多种解决方案(非常实用)

    在项目开发中我们常需要给某些数据定义一个唯一标识符,便于寻找关联,这篇文章主要给大家介绍了关于JS生成id的多种解决方案,文中介绍的方法都非常实用,需要的朋友可以参考下
    2023-10-10
  • 查看Next.js默认配置信息的几种方法

    查看Next.js默认配置信息的几种方法

    文章介绍了几种查看Next.js默认配置信息的方法,包括使用Next.js CLI、getConfigAPI、实验性CLI命令以及在开发模式下访问特定路径,感兴趣的小伙伴跟着小编一起来看看吧
    2025-02-02
  • javascript不同页面传值的改进版

    javascript不同页面传值的改进版

    改进点:支持同页面有多个文本框,可自动向不同的文本框传值。先看演示吧
    2008-09-09
  • javascript 数组精简技巧小结

    javascript 数组精简技巧小结

    本文给大家分享了13个非常常用的JavaScript数组操作的小技巧,有需要的小伙伴可以来看看,个人十分推荐.
    2020-02-02
  • JavaScript实现星星等级评价功能

    JavaScript实现星星等级评价功能

    这篇文章主要为大家详细介绍了JavaScript实现星星等级评价功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 微信小程序自定义时间段picker选择器

    微信小程序自定义时间段picker选择器

    这篇文章主要为大家详细介绍了微信小程序自定义时间段picker选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07

最新评论