news 2026/4/3 1:15:30

typescript-接口的基本使用(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
typescript-接口的基本使用(三)

上一节我们讲了可接口中可选属性的用法,那么现在想这样一个问题,小的时候,我们看超人,超人可以做任何事情。不仅限于帮助人,帮助动物,帮助植物.....因为这些种类都有不同的“属性”,我们不可以局限于某个属性,那么,这里我们也是可以有办法的。

interface IAnyObj { [prop: string]: any; } class SuperMan { public doAnyThing(anyObj: IAnyObj): void { console.log("超人做任何事情 ", anyObj); } } let superMan = new SuperMan(); superMan.doAnyThing({ age: 999 }); superMan.doAnyThing({ name: "任何人" }); superMan.doAnyThing([99, 55]);

tsc index.ts

在这里我们定义了IAnyObj的接口,这里的[prop: string]: any;表示包含“任意字符串类型”的属性的事物,都可以传递到doAnyThing的方法中。最后的那个数组有点例外,其实访问的时候,他也会进行转换,把索引按照字符串来读取。其实这涉及到一个动态属性的问题。
比如传递过来的数据,你不确定这个数据都有哪些属性,那么就可以用下面的方法进行访问

interface IAnyObj { [prop: string]: any; } class SuperMan { public doAnyThing(anyObj: IAnyObj): void { // console.log("超人做任何事情 ", anyObj); let keys = Object.keys(anyObj); if (keys.length) { for (let i = 0; i < keys.length; i++) { console.log( "访问的属性 ", keys[i], "对应的值为 ", anyObj[keys[i]] ); } } } } let superMan = new SuperMan(); superMan.doAnyThing({ age: 999 }); superMan.doAnyThing({ name: "任何人" }); superMan.doAnyThing([99, 55]); let arr = [99, 55]; console.log(arr["0"]);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 8:08:22

JS判断左右Shift Ctrl Alt

https://blog.csdn.net/qq_46048008/article/details/126172744 https://www.w3school.com.cn/jsref/event_key_location.asp KeyboardEvent.location 0. DOM_KEY_LOCATION_STANDARD 1. DOM_KEY_LOCATION_LEFT 2. DOM_KEY_LOCATION_RIGHT 3. DOM_KEY_LOCATION_NUMPAD

作者头像 李华
网站建设 2026/3/28 9:00:40

为什么有的 Android 架构图是 4 层,有的却是 5 层?

一句话结论先给出&#xff1a; 4 层结构是早期 / 实现视角的 Android 架构图&#xff1b; 5 层结构是现代 / 工程化 / 系统级的 Android 架构认知。 两者不冲突&#xff0c;只是分层粒度和时代背景不同。 一、你可能见过的那张「4 层 Android 架构图」 很多教材、博客、老 PPT…

作者头像 李华
网站建设 2026/3/17 21:58:02

键盘按键测试

参考&#xff1a;https://www.keyboardtest.cn/ 三种布局 全键盘 隐藏数字区域 隐藏方向区域和数字区域 <html> <head> <meta name"viewport" content"widthdevice-width, initial-scale1.0, maximum-scale1.0, user-scalableno"/> &l…

作者头像 李华
网站建设 2026/3/20 1:23:19

linux内核伙伴系统分配物理页面时水位判断zone_watermark_ok

linux内核物理页面分配函数alloc_pages(...)在进行页面分配时非常重要的一个步骤就是判断当前Zone中可用页面减去分配需求页面后的剩余可用页面和低水位值(ALLOC_WMARK_LOW)之间的关系&#xff0c;如果低于最水位值则开始直接回收,否则可以继续分配。 其中判断关键步骤由函数zo…

作者头像 李华
网站建设 2026/3/24 11:23:02

Python连接KingbaseES全指南

好的&#xff0c;这是一个使用 ksycopg2 库在 Python 中连接和操作 KingbaseES 数据库的完整指南。1. 安装依赖首先&#xff0c;确保已安装 ksycopg2 包。它是 psycopg2 的一个分支&#xff0c;专为 KingbaseES 设计。pip install ksycopg22. 建立数据库连接导入库并使用连接参…

作者头像 李华
网站建设 2026/3/20 8:54:38

社会网络仿真软件:NetLogo_(16).NetLogo模型分享与发布

NetLogo模型分享与发布 在社会网络仿真中&#xff0c;开发和构建模型是一项重要的任务&#xff0c;但模型的分享与发布同样不可或缺。通过分享和发布模型&#xff0c;可以促进学术交流、提高模型的透明度和可复现性&#xff0c;同时也能帮助其他研究者或开发者在您的基础上进行…

作者头像 李华