在学习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 的理解相关推荐

  1. TypeScript 接口(Interface)

    TypeScript 接口(Interface) 本节介绍 TypeScript 各种类型接口的声明及其使用方法,接口在 TypeScript 中是极其重要的,我们使用接口来定义契约,如类型命名.属性 ...

  2. typescript 接口 interface

    代码: // 接口:行为的抽象 // 一.对class类的约束 // 接口定义 // 打印机 interface Iprinter {Printing(msg:string):string; } in ...

  3. 【lib.es5】ArrayBuffer、DataView 的TypeScript接口

    ArrayBuffer.DataView 的 TypeScript 接口 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263 ...

  4. 接口(Interface)的深入理解

    接口(Interface)的深入理解 一:接口是规范(不展开) 二:接口可以看成是一个特殊的类 1: 接口可以定义"接口类型变量",就好像类可以定义类类型的变量(或者说是引用类型变 ...

  5. C#接口(Interface)理解

    文章目录 C#接口(Interface)理解 C#接口(Interface)理解 接口定义了所有类继承接口时应遵循的语法合同. 接口定义了语法合同 "是什么" 部分,派生类定义了语 ...

  6. typescript中的类型type与接口interface

    typescript中的type相当于是给类型起一个新的名字 基本用法: 比如我想声明一个类型为number的年龄age,刚开始学typescript,我们可能会这样写 let age:number ...

  7. TypeScript中interface 与 type的区别,你真的懂吗?

    在写 ts 相关代码的过程中,总能看到 interface 和 type 的身影.它们的作用好像都一样的,相同的功能用哪一个都可以实现,也都很好用,所以也很少去真正的理解它们之间到底有啥区别, 分别在 ...

  8. typescript 接口 java_[Java教程]【TypeScript】TypeScript 学习 2——接口

    [Java教程][TypeScript]TypeScript 学习 2--接口 0 2015-06-19 12:00:28 在 TypeScript 中,接口是用作约束作用的,在编译成 JavaScr ...

  9. go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

最新文章

  1. Xcode 调试的正确打开方式——Debugging
  2. 常用工具之zabbix
  3. 数据库——修改表信息(转)
  4. 实现自己的“单页”博客,只需要一个指令 (Moka)
  5. SQL开发好助手—SQL Assistant 5
  6. JVM命令查看与设置参数
  7. python24.dll_2_48_python24.dll
  8. 冒险岛sf发布网广告_魔域sf游戏怎么选择合适又放心的服务器?
  9. 只能选择分卷文件的第一部分。_为机器学习模型选择正确的度量评估(第一部分)...
  10. android 清理工具,Android 版 Avira Optimizer 是 Android 手機清理工具
  11. 学习 | MongoDB 索引和排序
  12. 团队作业4——第一次项目冲刺(Alpha版本)2017.4.23
  13. mysql技术任务_MySQL基础教程(13)MySQL计划任务
  14. [LeetCode系列] 跳跃问题II
  15. PHP 图片处理类 错误处理方法:
  16. vs2005设置使用符号服务器
  17. mysql数据迁移双写_【数据迁移】在线数据迁移 :双写数据库、搬历史数据、切换写入、灰度验证(99.9999%)、删除历史-Go语言中文社区...
  18. qlv视频怎么转换成mp4格式工厂?如何用格式工厂将qlv格式转换成mp4格式?
  19. 【采用】金融知识图谱技术与银行业应用研究
  20. SQL中UNPIVOT是什么

热门文章

  1. 前端学习(2769):发送网络请求
  2. 前端学习(2499):Property or method “name“ is not defined on the instance but referenced during render. Ma
  3. 前端学习(2423):补充markdown语法补充
  4. 前端学习(2379):调整初始目录结构
  5. 前端学习(1818):前端面试题之封装函数之进行字符串驼峰的命名
  6. 前端学习(1653):前端系列实战课程之常见各种窗口
  7. mybatis学习(7):Windows下安装MySQL详细教程
  8. java学习(39):九九乘法表
  9. matlab LSTM序列分类的官方示例
  10. html头部尾部分离组件引入(JQ)