TypeScript快速入门 - 接口

TypeScript接口

1、关键字:interface

interface IUser {name: stringage: number
}let user: IUser = {name: "张三", age: 22};
console.log(user);// {name: "张三", age: 22}

2、接口的继承

        关键字:extendes

interface IUser {name: stringage: number
}let user: IUser = {name: "张三", age: 22};
console.log(user);// {name: "张三", age: 22}// 接口可以继承
interface IStudent extends IUser {}let student: IStudent = {name: "李四", age: 18};console.log(student);
// {name: "李四", age: 18}

3、接口的可选参数

        关键字: ?

interface IUser {name: stringage: number
}let user: IUser = {name: "张三", age: 22};
console.log(user);// {name: "张三", age: 22}// 接口可以继承
// CET6?: 代表CET6是可选参数,可有可无,而CET4参数则必须得有
interface IStudent extends IUser {CET4: booleanCET6?: boolean
}let student1: IStudent = {name: "李四", age: 18, CET4: true};
let student2: IStudent = {name: "李四", age: 18, CET4: true, CET6: false};console.log(student1);
// {name: "李四", age: 18, CET4: true}console.log(student2);
// {name: "李四", age: 18, CET4: true, CET6: false}

4、接口的只读属性

        关键字:readonly

interface IUser {name: stringage: number
}let user: IUser = {name: "张三", age: 22};
console.log(user);// {name: "张三", age: 22}// 接口可以继承
interface IStudent extends IUser {readonly DNA: stringCET4: booleanCET6?: boolean
}let student: IStudent = {name: "李四", age: 18, DNA: "aaaa", CET4: true};console.log(student);
// {name: "李四", age: 18, CET4: true} // CET6是可更改的属性
student.CET6 = true;console.log(student);
// {name: "李四", age: 18, CET4: true, CET6: true} // 报错 DNA字段是不可修改的,是只读属性
student.DNA = "ddddddd";

5、函数类型接口

// 接口的目的重在约束
interface IFunc {(name: string): void
}let f: IFunc = (a: string): void => {console.log(a);
}f("aa");// aa

6、可索引类型接口

interface IIndex {[index: string]: string
}let index: IIndex = {username: "张三", nickName: "zhangsan"};console.log(index);// {username: "张三", nickName: "zhangsan"}

7、类类型的接口

// 接口重在于约束
interface User {name: stringage: numbersayInfo(): void
}class Student implements User {name: stringage: numbersayInfo(): void {console.log("姓名: " + this.name);console.log("年龄: " + this.age);}constructor(name: string, age: number) {this.name = name;this.age = age;}
}let student: Student = new Student("张三", 18);
student.sayInfo();// 姓名: 张三
// 年龄: 18

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 中的 InteractiveViewer:轻松实现交互性

在Flutter中,为了创建具有交互性的用户界面,我们通常需要使用各种手势检测和动画。然而,Flutter提供了一个强大而简便的小部件,即InteractiveViewer,它可以帮助我们轻松实现拖动、缩放和其他手势交互效果。本文将介绍I…

【2023我的编程之旅】系统学习C语言easyx图形库心得体会

目录 引言 C语言基础知识回顾 easyx图形库介绍 如何快速学习easyx图形库 学习笔记积累 学习成果展示 学习拓展 总结 引言 首先说一下我为什么要学习C语言easyx图形库。我接触C语言easyx图形库是在我今年一月份的时候,也是机缘巧合之下偶然在B站上看到了鸣人…

C++力扣题目669--修剪二叉搜索树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。…

Win10不用U盘重装系统教程

在Win10电脑中,用户想重装电脑系统,但是自己没有U盘,想知道不用U盘要怎么完成Win10系统的重装?接下来小编给大家介绍Win10系统不用U盘重装的步骤,帮助大家轻轻松松完成系统Win10的重新安装,体验Win10系统的…

CF1446C Xor Tree 题解 DP Trie树

Xor Tree 传送门 题面翻译 给定你一个非负整数序列 a a a,保证其中每个数两两不同。 对于每个 a i a _ i ai​,它会向 j ≠ i j \ne i ji 且 a i ⊕ a j a_i\oplus a_j ai​⊕aj​( ⊕ \oplus ⊕ 代表异或)最小的 a j a…

React18-树形菜单-递归

文章目录 案例分析技巧通信展示效果实现代码技巧点技巧点 Refer to 案例分析 https://github.com/dL-hx/manager-fe/commit/85faf3b1ae9a925513583feb02b9a1c87fb462f7 从接口获取城市数据,渲染出一个树形菜单 要求: 可以展开和收起 技巧 学会递归渲染出一个树形菜单, 并点击后…

力扣-三数之和

三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。…

16. 从零用Rust编写正反向代理, 反向代理upstream源码实现

wmproxy wmproxy是由Rust编写,已实现http/https代理,socks5代理, 反向代理,静态文件服务器,内网穿透,配置热更新等, 后续将实现websocket代理等,同时会将实现过程分享出来&#xff…

gramine运行nodejs例程

首先, 修改js例程代码: const { Web3 } require(web3); const rpcURL "https://sepolia.infura.io/v3/40b89bc0f5584056b19626b521ee5874"; const web3 new Web3(rpcURL); const address "0xde51E698b4585Af1C8322cc084ABbdbDcfe533…

C++力扣题目450--删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先…

Generalized Focal Loss论文个人理解

论文地址:Generalized Focal Loss: Towards Efficient Representation Learning for Dense Object Detection 论文解决问题 研究人员最近更加关注边界框的表示(representation)及其定位质量估计(LQE,本论文中指的是IoU score)&a…

将YOLO数据集转成COCO格式,单个文件夹转为单个json文件,例如.../images/train转为instance_train.json

写在前面 参考链接:objectdetection-tricks/tricks_4.py 相关视频教学:tricks_4 用于yolov5和v7中的yolo格式转换coco格式的脚本.(如何在v5和v7中输出ap_small,ap_middle,ap_large coco指标)还可以参考相关的VOC转COCO的方式:damo-yolo/voc2…

R语言【paleobioDB】——pbdb_reference():通过参数请求获得多条参考文献的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_references (...) Arguments 参数【...】…

MtimeMtimecmp

Mtime: 实时time计数器,可读可写;mtime必须按照一个固定的频率递增;如果count overflow了,则mtime的值需要卷绕;对于32/64的系统来说,mtime的值都是64bits的; 与mtime对应的,还有一…

【架构师成长之领域驱动开发】

架构师成长之路 1. 如何构建高质量应用?2. 三大设计原则?3.DDD妙招4. 最终的改造结果5.模型 项目中的“坏”味道 可维护性差:大量的第三方模块影响核心代码的稳定性可扩展性差:业务逻辑与数据存储相互依赖,无法复用可测…

项目中使用iframe引入html 解决路由错乱问题以及父子组件传值调用方法

iframe与外部之间传值 父组件 <iframeid"iframe"src"luckysheet/index.html"frameborder"0"scrolling"no"style"width: 100%; height: 60vh; border: 0"/>const frame document.getElementById(iframe);frame.onloa…

Python综合练习之图表

文章目录 文件目录如下图标效果timeline_bar_with_graphic.htmltable_base.html articles.jsonarticlesData.pyarticlesEchartsEntity.pyarticlesEntity.py Python学习了约一个月的时间&#xff0c;这是一篇综合练习的文章。主要做的内容是通过封装对象、实现抽象方法生成统计图…

不可预测的市场中,为何有人持续胜出?

为什么经济学家和证券分析师难以预测经济或股价走势&#xff0c;而少数投资大师却能几十年持续复利&#xff1f;这两个问题看似矛盾&#xff0c;既然无法预测&#xff0c;为何又能产生确定性的赚钱结果呢&#xff1f; 有人认为这是因为幸存者偏差。然而&#xff0c;三十年以上连…

优优嗨聚集团:债务逾期,如何应对与解决?

在现代社会&#xff0c;债务问题已成为越来越多人面临的难题。债务逾期不仅会给个人带来巨大的经济压力&#xff0c;还会影响个人信用记录&#xff0c;甚至可能引发法律纠纷。那么&#xff0c;当债务逾期时&#xff0c;我们应该如何应对与解决呢&#xff1f; 一、了解债务情况 …

14.STL 常用算法

14、STL常用算法 概述&#xff1a; 算法主要是由头文件 、、 组成 是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 体积很小&#xff0c;只包括几个在序列上面进行简单数学运算的模板函数 定义了一些模板类,用以声明函数对象…