ts中的接口

  1. 一般用来定义数据结构,因为ts中的interface不同于其它强类型语言的一点是,interface中可以定义变量,这就使得interface还可以充当一些model对象的基类使用,而并非通常的用来定义一些行为。
  2. 接口只声明成员方法,不做实现。

ts中的类

  1. 类声明并实现方法

场景

接口有什么用呢?设想如下需求:
要实现一个print函数,它将传入的对象打印出来。在实际实现上,它将调用对象的getContent方法:

function print(obj): void {console.log(obj.getContent());
}

但是这样书写是有问题的,你知道Typescript当中是有类型检查的,必须要确保obj中存在getContent方法才能让print函数正常工作不报错。

比如:

class Article {public function getContent(): String {return 'I am an article.';}
}function print(obj: Article): void {console.log(obj.getContent());
}let a = new Article();
print(a);

但是这样的话print函数不就只能打印Article类的对象了吗,如果我想要让它能够打印不止一个类的对象呢?我如何保证他们都有getContent方法?
这时候就可以用到接口,来声明一个getContent方法,这样一来,每个实现该接口的类都必须实现getContent方法:

interface ContentInterface {getContent(): String;
}class Article implements ContentInterface {// 必须实现getContent方法public function getContent(): String {return 'I am an article.';}
}class Passage implements ContentInterface {// 但实现方式可以不同public function getContent(): String {return 'I am a passage.'}
}class News implements ContentInterface {// 没有实现getContent方法,编译器会报错
}function print(obj: ContentInterface): void {// 实现了ContentInterface的对象是一定有getContent方法的console.log(obj.getContent());
}let a = new Article();
let p = new Passage();print(a); // "I am an article."
print(p); // "I am a passage."

typescript中接口和类的区别相关推荐

  1. C#中接口和类的区别

    接口:使用interface关键字声明,将隐式公共方法和属性结合起来,以封装特定功能的一个集合. 类: 只有class关键词修饰的类. 不同点: 1)不能实例化接口 2)接口没有方法的实现 3)接口可 ...

  2. java的类和接口区别_Java接口和类的区别

    一.概述 定义 Comparable是在集合内部定义的方法实现的排序的接口,位于java.util下. Comparator是在集合外部实现的排序的接口,位于java.lang下. Comparabl ...

  3. java中的stack类和C++中的stack类的区别

    文章目录 1 java中的stack类和C++中的stack类的区别 1.1 java中的stack类 1.2 C++中的stack类 1.3 分析 不经意间想到了这个问题,存到栈中的是对象的引用,还 ...

  4. [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围

    参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 *    类的访问修 ...

  5. c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别

    描述 接口与类的关系 类与接口是两个概念,不能混淆. 接口概念 程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务.面向过程语言最基本的单元是过程和函数. ...

  6. java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答

    基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...

  7. Java中接口和抽象类的区别

    这里说的都是在java8新特性之前的特点.因为在jdk1.7之前,接口是不允许定义方法体的,当然还有一些其他的特性,我这里就不一一列出了.我这篇文章还是说一哈jdk1.7之前的接口和抽象类的区别和联系 ...

  8. java中抽象类和接口的相同点和不同点_Java中接口和抽象类的区别与相同之处

    1. 抽象类: (1).概念:抽象类是对一种事物的抽象,即对类抽..抽象类是对整个类整体进行抽象,包括属性.行为.Java抽象类和Java接口一样,都用来声明一个新的类型.并且作为一个类型的等级结构的 ...

  9. TypeScript中接口和抽象类

    接口和抽象类的出现主要是为了添加参数的限制,来规范代码 接口 TypeScript的核心原则之一是对值所具有的结构进行类型检查. 它有时被称做"鸭式辨型法"或"结构性子类 ...

最新文章

  1. kubernetes创建资源的两种方式
  2. Intellij IDEA 使用Spring-boot-devTools无效解决办法
  3. python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...
  4. java中的显示初始化和特定初始化
  5. dk7与jdk8环境共存与切换
  6. gridview控件添加属性
  7. 2022年05月系统集成项目管理工程师考试知识点分布
  8. 枚举身份证后四位java代码
  9. python+opencv代码给证件照换底色
  10. YS13-3荧光管时钟设计
  11. 什么是APS高级计划排程(高级计划排产)可视化甘特图,有哪些应用效果?
  12. 免费国产化Hypervisor系统安装
  13. 写技术文档需要注意什么
  14. 输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
  15. Oracle-Oracle数据库安全管理
  16. 网易云放音乐加载不出来 CSDN打不开等问题 重新分配IP地址
  17. 对偶线性规划——问题转化
  18. 爬虫漫游指南:瑞数的反调试陷阱
  19. 鼠标滑动两张图片前后对比js插件
  20. 华为交换机和H3C交换机以及思科交换机常用命令

热门文章

  1. 阿里云国际站版游戏盾产品详细解析以及防御问题介绍
  2. 2009年最影响中国企业10大IT事件
  3. python嵌套函数具体案例_python编程嵌套函数实例代码
  4. 基于P5“尝试开发”一个“绘画系统”
  5. photoshop(ps)如何裁剪不规则图片
  6. 嵌入式Linux应用层开发教程(一)基本概念
  7. pe进不去linux系统怎么办,u盘启动不了pe系统怎么办_电脑进不去u盘的pe系统解决方法-win7之家...
  8. flask项目开发到部署笔记
  9. 把计算机用于科学计算它最显著优势在于,2011年12月统考计算机应用基础 2
  10. mklink命令——目录的“快捷方式”