typescript基础知识(四)接口

TypeScript(四)接口 ​在介绍TS对象类型中,为了让数组每一项更具体,我们使用 string [ ] 表示字符串类型的数组,为了知道函数的参数与返回值,使用 let fn: (a: number, b: number) => number 来表示一个函数类型,那么作为复杂类型,仅仅使用Object表示一个普通对象类型是远远不能满足类型检查以及代码可读性的,有没有一种类型可以用来描述对象的结构呢? ​ 阅读详情

在我的理解中,接口是用于对一系列方法/属性定义一些标准化的内容,在typescript中体现为对类型的标准化,使用interface关键字来定义一个接口

属性接口


属性接口针对于对象的属性标准化

interface Information{ // 接口
    name:string;
    age:number;
}

function person(info:Information):void{ 
// 传入的对象必须包含类型为string的属性name和类型为number的属性age
    console.log(`I am ${info.name},and I am ${info.age} years old now`);
}

person({name:'小明',age:18});

要注意的是,如果和上面一样在传入参数的位置写出变量,那么对象只能包含接口里面的属性,而如果事先定义好一个对象,那么可以包含接口里面的属性外的其他属性,因此最好事先定义一个对象再作为参数传入

person({name:'小明',age:18}); // 正确

person({id:2,name:'小明',age:18}); // 错误

let obj={
    id:2,
    name:'小明',
    age:18
}
person(obj); // 正确

可选属性接口

如果有些参数可传可不传,可以通过在属性名和类型之间加入“?”来使其变为可选属性

interface information{
    name:string;
    age?:number;
}

function person(info:information){
    if(!info.age){
        console.log(`I am ${info.name}`);
    }else{
        console.log(`I am ${info.name},and I am ${info.age} years old now`)
    }
}

let p1={
    name:'小明'
}

let p2={
    name:'小红',
    age:18
}

person(p1); // I am 小明

person(p2); // I am 小红,and I am 18 years old now

函数接口


函数接口是用于标准化函数的参数个数,参数类型以及返回值的类型

interface fn{
    (first:string,second:number):string;
}

var fn:fn=function(f:string,s:number):string{
    return `f:${f}----s:${s}`;
}
console.log(fn('1',2)); // f:1----s:2

接口中括号内是参数的个数和类型,按顺序写出参数的类型,括号后面即为函数返回值的类型

可索引接口


可索引接口是用于标准化有索引的类型,如数组和对象,但不是很实用

interface Arr{
    [index:number]:string; // 下标为number,成员为string,也就是数组了
}

let arr:Arr=['123','123'];

interface Obj{
    [index:string]:string; // 下标为string,也就是对象了
}

let obj:Obj={name:'小明',age:'18'};

类接口


类接口用于标准化类,类使用类接口和子类继承抽象类很类似,都必须有其内定义的所有属性方法,且类型需要相同,类通过implements关键字来使用接口

interface Person{
    name:string;
    work():string;
}

class Student implements Person{
    name:string;
    constructor(name:string){
        this.name=name;
    }
    work(){
        return '读书';
    }
}

接口间的继承


接口之间也是能使用继承的,被子接口约束的内容也会被其继承的父接口约束,接口间的继承通过extends关键字来实现

interface Person{
    name:string;
    introduce():string;
}

interface Student extends Person{
    work():string;
}

class Monitor implements Student{ 
// 通过使用Student接口,同时受到了Person接口的约束
    name:string;
    constructor(name:string){
        this.name=name;
    }
    introduce(){
        return `I am ${this.name}`;
    }
    work(){
        return 'study';
    }
}

泛型接口


在说泛型接口前先说一下泛型

泛型的使用使得参数可以在使用时才确定参数的类型,对于不确定类型的使用有很大的应用性

泛型函数

泛型通过将<>来实现,<>里面的内容即为泛型的具体数据类型,在声明时可随意写入字母

function fn<T>(val:T):T{
    return val;
}

fn<number>(1);

泛型类

class Person<T>{
    out(val:T):T{
        return val; 
    }
}

let p=new Person<number>();
p.out(1);

接口

泛型接口即在标准化内容时使用接口来进行标准化,使得在使用时可以使用不同的数据类型

interface Gen{
    <T>(value:T):T;
}

var gen:Gen=function<T>(val:T):T{
    return val;
}

gen<number>(2);

 

记一次使用STM32F042K6芯片内部HSI48M时钟导致CAN总线报错问题 深入去解决某个问题时,也会加深你对其它部分的了解和思考,比如这里让我又重新了解和CAN的采样点和CAN报错机制。 阅读详情

相关推荐

最优控制理论 二+、哈密尔顿函数法的补充

本章基于变分法所推出的哈密尔顿函数法,2、讨论了积分方程约束的转化、控制+状态等式约束的一阶必要条件。3、控制分段连续、状态存在内点约束等情况下的角点条件,给出了协态变量和哈密尔顿函数在内点处不连续的表达式。...

MSysの优快云 9396

TypeScript 中括号用法笔记

本文只是简单从语法层面描述 [] 的用法。TS是JS的超集,但是TS在类型方面不是采用的ES标准实现的。

FYSGXFZ的博客 2361

WSL2不能上网,Failed to connect to github.com port 443问题解决方案

WSL2不能上网: 问题:ping外网无效 例如:ping www.baidu.com失败 解决方案: 在wsl: $sudo vi /etc/wsl.conf wsl.conf: [network] generateResolvConf = false 在PowerShell: $sudo vi /etc/etc/resolv.conf resolv.conf: # This file was automatically generated by WSL. To stop automatic gen

Jason_Chen__的博客 9528

【ts】typescript高阶:键值类型及type与interface区别

学习目标: 1、键值类型的语法 2、type与interface的区别 3、类型别名与接口的一些使用场景总结 2、错误例子 3、正确例子 二、type与interface的区别 1.相同点一 代码如下(示例): 2.相同点二 代码如下(示例):...

qq_48896417的博客 3770

遥感大模型核心技术之自监督预训练技术研究(2025年9月版)

本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。

panshengwu的博客 842

《Zephyr OS 入门与实战》第3章:第一个 Zephyr 程序 - Blinky 实战

解决方法:确认设备树overlay文件已正确加载。返回值,确认驱动初始化状态。

2301_79143213的博客 541

[typeScript语法3]interface

前2篇有错误的原因找到了,本地的ts版本有问题,不是最新版本,是1.8。不改了,就这样写吧,以后注意~~ /**typeScript-3 interface * Created by liyanq on 17/6/8. */ interface LabelledValue { label: string; } function PrintLabel(labelledObj: Lab

灵眼儿上方 881

OpenGL ES 3.0 开发(一):绘制一个三角形

该原创文章首发于微信公众号:字节流动 什么是 OpenGLES OpenGLES 全称 OpenGL for Embedded Systems ,是三维图形应用程序接口 OpenGL 的子集,本质上是一个跨编程语言、跨平台的编程接口规范,主要应用于嵌入式设备,如手机、平板等。由科纳斯(Khronos)组织定义和推广,科纳斯是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 O...

字节流动 8万+

Typescript中括号和keyof的几个特殊用法

1. 支持任意属性的接口 有时候我们希望一个接口允许有任意的属性,可以使用如下方式: interface Person { name: string; age?: number; [propName: string]: any; } let tom: Person = { name: 'Tom', gender: 'male' }; 使用 [propName: string] 定义了任意属性取 string 类型的值。 需要注意的是,一旦定义了任意属性,那么确定属

天地会珠海分舵 2771

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 179

【基于深度学习的脑电图识别】数据集篇:THE TUH EEG CORPUS: A Big Data Resource for Automated EEG Interpretation

【基于机器学习的脑电图识别】数据集篇:脑电信号自动判读的大数据摘要: 摘要: 这个数据集包括超过 25000 个脑电图研究,包括一个神经学家对测试的解释,一个简短的病人病史和关于病人的人口统计信息,如性别和年龄。这是第一次有足够的数据来支持最先进的机器学习算法的应用。在这篇论文中,我们使用了3762个语料库的会话子集,展示了从原始脑电图信号数据预测脑电图的一些基本属性的初步实验结果。在闭环测试中,...

梁瑛平的博客 5615

TypeScript—Interface 接口

一、 Interface 接口 定义Object的类型 对对象的属性和方法进行类型定义 Duck Typing (鸭子类型) Interface 是JavaScript中不存在的概念,所以Interface 不会被转换成JavaScript,Interface 只是用来做类型的静态检查 // ts 建议在变量名前,加一个I,告诉别人这是Interface类型 interface IPerson {} // 定义一个接口 interface Person { name:string; age: n

m0_37616866的博客 890

【学习系列】SAP RAP 22:Excel文件上传和读取(非扩展&扩展方式)

本文介绍了在RAP中实现Excel文件上传处理的三种方法:1) 使用@Semantics.largeObject注解实现简单上传下载,但限制在ObjectPage页面使用;2) 通过自定义action弹窗实现上传功能,但存在无法自动刷新列表等限制;3) 结合CustomUIExtension实现更灵活的完整功能,但需要UI5开发技能。文章详细说明了每种方法的实现步骤,包括数据库表设计、注解配置、前端界面开发和后端处理逻辑,并比较了各自的优缺点。最后通过一个处理不同币种数据的示例,展示了如何实现业务处理逻辑。

DeveloperMrMeng的博客 626

「TypeScript系列」TypeScript 接口/接口继承

在 TypeScript 中,接口(Interfaces)是支持单继承的,即一个接口可以继承自另一个接口。在 TypeScript 中,接口(Interfaces)是一个非常重要的概念,它用于定义对象的形状,即对象应该有哪些属性和方法。需要注意的是,尽管在这个例子中我们没有直接在接口中使用联合类型,但联合类型与接口的结合使得我们可以定义更加复杂和灵活的类型系统。接口定义了一个索引签名,表示该对象可以有任意数量的字符串类型的键和对应的字符串类型的值。符号来定义,表示一个值可以是几种类型中的任何一种。

日常笔记/总结/系列知识梳理 2700

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【TypeScript】中接口的详细介绍

在前面我们通过type可以用来声明一个对象类型:通过类型别名(type), 声明一个对象类型对象类型的另外一种声明方式, 就是通过接口来声明:通过接口, 声明一个对象类型使用接口定义时, 有一个规范, 接口名前面加上一个"I", 这个是规范, 遵不遵守看个人意愿// 接口名前面加上一个大写的I interface IInfoType {接口定义对象类型时, 同样可以定义可选类型, 使用方式和之前是一样的name : string // 添加可选类型 age?接口也可以定义只读属性, readonly。...

m0_71485750的博客 2434

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【TypeScript】接口

ts 接口

zhenshu_guo的博客 1894

TypeScript基础知识

TypeScript 是 JavaScript 的类型的超集,支持ES6语法,支持面向对象编程的概念,如类、接口、继承、泛型等。安全兼容JavaScript,是JavaScript的超集;引入类型系统,可以尽早定位错误位置,帮助提升开发效率;先进的JavaScript,支持JavaScript的最新特性;TypeScript在社区的流行度越来越高,他非常适用于一些大型项目,也非常适用于一些基础库,极大地帮助我们提升了开发效率和体验。demo(2)

ZMN0057的博客 1098

typescript 的接口

在TypeScript中,使用interface关键字来定义一个接口。接口可以包含多个属性和方法的声明,但不包含它们的实现。上述代码定义了一个名为Personname属性(字符串类型)、age属性(数字类型)和greet方法(无返回值)。

读心悦 1298

TypeScript接口

TypeScript接口

m0_61787196的博客 914

7. TypeScript接口

TypeScript接口(Interfaces)是定义对象结构的强大工具,用于确保代码的一致性和可维护性。接口通过强制对象遵循特定属性结构和方法签名来实现类型检查,编译时会被移除。与type相比,接口更专注于对象形状描述,支持多重声明合并,适合类实现。最佳实践包括:定义复杂对象结构、使用可选属性、接口继承和函数签名定义。类可通过implements关键字实现单个或多个接口。高级应用包括创建带条件类型的接口(使用extends、映射类型和联合类型)以及混合类型(结合对象、函数等特性)。这些特性使TypeScr

Raink老师的博客 1719

TypeScript学习(四)接口

1.接口类型 接口的作用:定义标准 1.1属性接口 对json进行约束 // 对json进行约束 interface info{ firstName:string, secondName:string } function print(info:info):void{ console.log(info.firstName+info.secondName) } let a={ age:20,//可以多传值,不可少传值 firstName:"李", secondN

qq_42584511的博客 238

【TypeScript】TypeScript 联合类型、接口、类

本文详细介绍了TypeScript联合类型和TypeScript类

m0_64455070的博客 1153

初学TypeScript之接口定义

TypeScript入门(2) 前面讲了如何使用TypeScript和TypeScript的数据类型有哪些,这一章就讲解TypeScript的接口。 如果不知道如何写TypeScript的朋友或者不知道TypeScript的数据类型有哪些的朋友可以转至 TypeScript的使用以及数据类型详解 处观看。 接口: 简介: TypeScript的核心原则是对值所具有的结构进行类型检查。在TypeSc...

吴小迪的博客 3万+

TypeScript中的接口用途

typeScript中的接口 属性类接口 函数类型接口 可索引接口 类类型接口 接口扩展 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。 typescrip中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类等

张木期的博客 2295

TypeScript 接口

定义了一个名为Personname:必需的属性,且类型为字符串string。age: 必需的属性,类型为数字number。

咸鱼滚滚 1552

typescript 接口实现

接口是 TypeScript 的核心特性,用于定义契约,确保代码的结构一致性。通过implements关键字让类实现接口。支持可选属性、只读属性、函数类型、继承等高级用法。在 Cocos Creator 中,接口可帮助管理组件、数据模型和网络协议的结构。

lcfengokok的博客 1012
上一篇: typescript基础知识(三)类
下一篇: 蓝桥杯 算法训练 数字三角形 Java实现
前端小黑
博客等级 码龄9年 148粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值