typescript 接口 interface 的理解
在学习typescript
的时候,经常发现别人写了好多接口(interface)
,那问题来了,我们自己写代码,应该在什么情况下写接口才比较合适呢。于是我就找了找资料,整理一下。
接口运行时的影响为 0。TypeScript 接口中有很多方式来声明变量的结构。
以下两个是等效声明, 第一个使用内联注解,第二个使用接口:
// Sample A
declare const myPoint: { x: number; y: number };// Sample B
interface Point {x: number;y: number;
}
declare const myPoint: Point;
示例 B 的好处在于,如果有人创建了一个基于 myPoint 的库来添加新成员, 他们可以轻松将此成员添加到 myPoint 的现有声明中:
// Lib a.d.ts
interface Point {x: number,y: number
}
declare const myPoint: Point// Lib b.d.ts
interface Point {z: number
}// Your code
let myPoint.z // Allowed!
因为 TypeScript 接口是开放式的,这是 TypeScript 的一个重要原则,它允许你使用接口模仿 JavaScript 的可扩展性。
通过上面可以明白,接口可以增加扩展性,又不会影响到性能,所以使用接口了。
类可以实现接口
如果你希望在类中使用必须遵循的接口(类)或是别人定义的对象结构,可以使用 implements 关键字来确保兼容性:
interface Point {x: number;y: number;
}class MyPoint implements Point {x: number;y: number; // Same as Point
}
基本上在 implements(实现) 的存在下,该外部 Point 接口的任何更改都将导致代码库中的编译错误,因此可以轻松地使其保持同步:
interface Point {x: number;y: number;z: number; // New member
}class MyPoint implements Point {// ERROR : missing member `z`x: number;y: number;
}
参考文档地址:https://jkchao.github.io/typescript-book-chinese/typings/interfaces.html
typescript 接口 interface 的理解相关推荐
- TypeScript 接口(Interface)
TypeScript 接口(Interface) 本节介绍 TypeScript 各种类型接口的声明及其使用方法,接口在 TypeScript 中是极其重要的,我们使用接口来定义契约,如类型命名.属性 ...
- typescript 接口 interface
代码: // 接口:行为的抽象 // 一.对class类的约束 // 接口定义 // 打印机 interface Iprinter {Printing(msg:string):string; } in ...
- 【lib.es5】ArrayBuffer、DataView 的TypeScript接口
ArrayBuffer.DataView 的 TypeScript 接口 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263 ...
- 接口(Interface)的深入理解
接口(Interface)的深入理解 一:接口是规范(不展开) 二:接口可以看成是一个特殊的类 1: 接口可以定义"接口类型变量",就好像类可以定义类类型的变量(或者说是引用类型变 ...
- C#接口(Interface)理解
文章目录 C#接口(Interface)理解 C#接口(Interface)理解 接口定义了所有类继承接口时应遵循的语法合同. 接口定义了语法合同 "是什么" 部分,派生类定义了语 ...
- typescript中的类型type与接口interface
typescript中的type相当于是给类型起一个新的名字 基本用法: 比如我想声明一个类型为number的年龄age,刚开始学typescript,我们可能会这样写 let age:number ...
- TypeScript中interface 与 type的区别,你真的懂吗?
在写 ts 相关代码的过程中,总能看到 interface 和 type 的身影.它们的作用好像都一样的,相同的功能用哪一个都可以实现,也都很好用,所以也很少去真正的理解它们之间到底有啥区别, 分别在 ...
- typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口
[Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...
- go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
最新文章
- Xcode 调试的正确打开方式——Debugging
- 常用工具之zabbix
- 数据库——修改表信息(转)
- 实现自己的“单页”博客,只需要一个指令 (Moka)
- SQL开发好助手—SQL Assistant 5
- JVM命令查看与设置参数
- python24.dll_2_48_python24.dll
- 冒险岛sf发布网广告_魔域sf游戏怎么选择合适又放心的服务器?
- 只能选择分卷文件的第一部分。_为机器学习模型选择正确的度量评估(第一部分)...
- android 清理工具,Android 版 Avira Optimizer 是 Android 手機清理工具
- 学习 | MongoDB 索引和排序
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.23
- mysql技术任务_MySQL基础教程(13)MySQL计划任务
- [LeetCode系列] 跳跃问题II
- PHP 图片处理类 错误处理方法:
- vs2005设置使用符号服务器
- mysql数据迁移双写_【数据迁移】在线数据迁移 :双写数据库、搬历史数据、切换写入、灰度验证(99.9999%)、删除历史-Go语言中文社区...
- qlv视频怎么转换成mp4格式工厂?如何用格式工厂将qlv格式转换成mp4格式?
- 【采用】金融知识图谱技术与银行业应用研究
- SQL中UNPIVOT是什么
热门文章
- 前端学习(2769):发送网络请求
- 前端学习(2499):Property or method “name“ is not defined on the instance but referenced during render. Ma
- 前端学习(2423):补充markdown语法补充
- 前端学习(2379):调整初始目录结构
- 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
- 前端学习(1653):前端系列实战课程之常见各种窗口
- mybatis学习(7):Windows下安装MySQL详细教程
- java学习(39):九九乘法表
- matlab LSTM序列分类的官方示例
- html头部尾部分离组件引入(JQ)