TS复习----TS中的接口

2023-11-17

目录

概念

属性接口

函数类型接口

可索引的类型

类类型接口

 接口继承


概念

接口的作用:在面向对象编程中,接口是一种规范的定义,他定义了行为和动作的规范,在程序设计里面,接口起到了一种限制和规范的作用接口定义了某一批类所需要遵守的规范,接口不关心这些类内部状态数据,也不关心这些类里的方法的实现细节,他只规定这批类里,必须提供的某些方法,提供这些方法的类就可以满足实际需求

属性接口

  • 类型检查器会查看printLabel的调用。 printLabel有一个参数,并要求这个对象参数有一个名为label类型为string的属性。
  • 需要注意的是,我们传入的对象参数实际上会包含很多属性,但是编译器只会检查那些必需的属性是否存在,并且其类型是否匹配。
function printLabel(labelledObj: { label: string }) {
    console.log(labelledObj.label);
}

let myObj = { size: 10, label: "Size 10 Object" };
printLabel(myObj);
// printLabel('aaa')//错误写法,传入参数必须是以label为属性名的对象

对批量方法进行约束

只要传入的对象满足提到的必要条件,那么它就是被允许

可选属性接口 可选属性名字定义的后面加一个?符号。

//定义标准
interface FullName {
    firstName: string;//以分号结束
    secondName: string;
    age?: number

}
function printName(name: FullName) {
    //要求必须传入对象firstName secondName
    console.log(name.firstName + '----' + name.secondName);
}

printName({
    firstName: '张',
    secondName: '三'
})

函数类型接口

函数类型接口:对方法传入的参数,以及返回值进行约束,是批量的,对于函数类型的类型检查来说,函数的参数名不需要与接口里定义的名字相匹配。

如果不指定类型,TypeScript的类型系统会推断出参数类型,

interface SearchFunc {
    (source: string, subString: string): boolean;
}
let mySearch: SearchFunc;
mySearch = function (src, sub) {
    let result = src.search(sub);
    return result > -1;
}
// let res1 = mySearch(1, 'a')
let res = mySearch('a', 'a')
console.log(res);

可索引的类型

可索引接口:对数组,对象的约束

//可索引接口
interface UserArr{
	//索引类型:value类型,此标准是索引是数字类型,value是字符串类型
    [index:number]:string
}
var arr:UserArr=['111','222']
console.log(arr[0]);//'111'

类类型接口

当一个类实现了一个接口时,只对其实例部分进行类型检查。类使用接口用implements 关键字

interface Animal {
    name: string;
    eat(str: string): void
}
class Dog implements Animal {

    constructor(public name: string) {
        this.name = name
    }
    eat() {
        console.log(`${this.name}吃骨头`);
    }
}
var d = new Dog('旺财');
d.eat()

 接口继承

和类一样,接口也可以相互继承。 一个接口可以继承多个接口,创建出多个接口的合成接口。

interface Animal {
    name: string;
    eat(): void
}
interface Person extends Animal {
    work(): void
}
class Programer {
    name: string;
    constructor(name: string) {
        this.name = name
    }
    coding(code: string) {
        console.log(`${this.name}${code}`);
    }
}
//继承类并且实现person接口,接口可以相互继承,类也可以
class Web extends Programer implements Person {
    constructor(name: string) {
        super(name)
    }
    eat() { //这个方法不写会报错,虽然我们只是继承person接口,但是这个接口是在animal标准之上建立的
        console.log(`${this.name}喜欢吃馒头`);
    }
    work() {//person接口标准
        console.log(`${this.name}喜欢敲代码`);
    }
}
var w = new Web('张三')
w.eat()//张三喜欢吃馒头
w.work()//张三喜欢敲代码
w.coding('在写ts')// 张三在写ts

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TS复习----TS中的接口 的相关文章

随机推荐

  • MATLAB生成单位矩阵、三角矩阵、零矩阵、1矩阵

    单位矩阵 eye m n 稀疏单位矩阵 speye m n ps I speye 1000 构成 1000 1000 单位矩阵的稀疏表示形式 它只需要大约 16 KB 的存储 这与 I sparse eye 1000 1000 的最终结果相
  • 概率论知识回顾(十七):方差

    概率论知识回顾 十七 重点 方差 知识回顾用于巩固知识和查漏补缺 知识回顾步骤 查看知识回顾中的问题 尝试自己解答 自己解答不出来的可以查看下面的知识解答巩固知识 对知识解答有疑问的 说明有关这一点的知识或者公式没有理解透彻或者没有记住 要
  • Win11 VSCode远程连接WSL2数据库

    首先 在VSCode中打开远程连接 可能会提示远程连接失败 无法连接到远程扩展主机服务器 错误 websocket close with status code 1006 这时启动wsl2 终端输入 vim etc ssh sshd con
  • CTFHub

    0x00 前言 CTFHub 专注网络安全 信息安全 白帽子技术的在线学习 实训平台 提供优质的赛事及学习服务 拥有完善的题目环境及配套 writeup 降低 CTF 学习入门门槛 快速帮助选手成长 跟随主流比赛潮流 0x01 题目描述 S
  • 单片机毕设选题 - 基于STM32自行车智能无线防盗报警器 -物联网 单片机 嵌入式

    hr style border solid width 100px height 1px color 000000 size 1 quot 0 前言 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的毕设题目缺少创新和亮点 往往达不到
  • k8s_day01_01

    k8s day01 01 1 it发展趋势 it 的发展趋势中 我们最早的资源粒度从最早的物理机时代 到达十年之前的 kvm 还有xen 为代表的虚拟化代表的虚拟机时代 那个时候 VMware是如日中天的时期 vmware 以产品众多且成熟
  • 【安全知识】——如何绕过cdn获取真实ip

    作者名 白昼安全 主页面链接 主页传送门 创作初心 以后赚大钱 座右铭 不要让时代的悲哀成为你的悲哀 专研方向 web安全 后渗透技术 每日鸡汤 现在的样子是你想要的吗 cdn简单来说就是 通过不同地理位置的缓存来加快访问速度 所以我们有可
  • centos7离线升级gcc到9.3.1,解决redis6安装失败

    我们在安装Redis6的时候会编译出错 大概率是因为centos7的gcc版本 centos7的默认版本是4 8 5 需要将gcc版本升级到9 如果服务器是互联网环境 可以直接通过yum命令升级 yum y install centos r
  • MFC多字节和宽字节转换方式

    第一种转换 代码中可以直接用宏定义转换 可以使用 L 或者 T 但是对于传过来的值 就不能这样了 需要写函数转换 第二种转换 必须在一个函数中执行 否则上一次调用并不会释放栈中的空间 要直到函数结束才会释放空间 测试是否释放内存空间可以使用
  • 单片机——PWM调光工作原理

    前言 如果只用单片机做一个调光系统 pwm是可以实现的 但是如果有其它的功能 比如传感器要检测 显示屏显示数据等等功能 就不推荐了 其它函数一多 定时器的时间又比较短 以至于单片机大多数时间都用在定时中断函数里去了 处理其它函数的时间太少
  • 京东云鼎服务器系统时间问题-时间戳参与与服务器时间差异大于设定值

    业务背景 目前业务对接了各大电商平台的订单 按照规定京东需要入鼎进行调用jos接口来拉取订单 相当于与订单API之间多一个应用中转 如图 该文章暂时不讨论对接的细节 后面打算出个专题文章细说各大电商平台的对接 目前好像比较少这个业务的分享
  • ios 无法发起ajax请求,PhoneGap的iOS的Ajax请求无法完成(Phonegap iOS ajax request

    请阅读更新这个答案在底部 原来的答案 我已经找到了问题所在 并设法得到基本的认证工作 问题是 Web服务器期待基本身份验证的细节与请求一起发送先发制人 要做到这一点使用 头 的jQuery AJAX的特性如下图所示 ajax type GE
  • 【debug】error: subprocess-exited-with-error

    在安装Python的某个三方包时 出现了下面的报错方式 error subprocess exited with error 解决办法 解决方案重新安装importlib metadata pip install importlib met
  • 经典面试题-大厂SQL题目

    1 如何用一个SQL找出部门下所有员工的平均工资大于某个数 例如20000元 的所有部门 正确答案 select depno avg sal as avgsal from emp group by depno having avgsal g
  • 使用python编写脚本测试目标主机的TCP端口连通性

    使用Python的Socket模块的connect 函数来尝试连接目标主机的特定端口 如果连接成功 则说明该端口是打开的 否则 该端口是关闭的 下面是一个示例脚本 可以检测目标IP的22端口是否开启 import socket def ch
  • 【c++】类模版

    1 类模板语法 类模板作用 建立一个通用类 类中的成员 数据类型可以不具体制定 用一个虚拟的类型来代表 语法 template
  • 市场监管总局关于对锂离子电池等产品实施强制性产品认证管理的公告

    按照 国务院办公厅关于深化电子电器行业管理制度改革的意见 国办发 2022 31号 有关要求 市场监管总局决定对电子电器产品使用的锂离子电池和电池组 移动电源以及电信终端产品配套用电源适配器 充电器 以下统称新纳入产品 实施强制性产品认证
  • 树莓派安装卸载软件命令apt-get

    apt get命令用法 1 安装软件 apt get install 软件名 2 卸载软件但不删除配置 apt get remove 软件名 3 卸载软件并且删除相关配置 apt get purge 软件名 4 更新数据库 apt get
  • Python简单的用户交互

    death age 80 name input your name input 接受的所有数据都是字符串 即便你输入的是数字 但依然会被当成字符串来处理 age input your age print type age int integ
  • TS复习----TS中的接口

    目录 概念 属性接口 函数类型接口 可索引的类型 类类型接口 接口继承 概念 接口的作用 在面向对象编程中 接口是一种规范的定义 他定义了行为和动作的规范 在程序设计里面 接口起到了一种限制和规范的作用接口定义了某一批类所需要遵守的规范 接