typescript中接口和类的区别
ts中的接口
- 一般用来定义数据结构,因为ts中的interface不同于其它强类型语言的一点是,interface中可以定义变量,这就使得interface还可以充当一些model对象的基类使用,而并非通常的用来定义一些行为。
- 接口只声明成员方法,不做实现。
ts中的类
- 类声明并实现方法
场景
接口有什么用呢?设想如下需求:
要实现一个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中接口和类的区别相关推荐
- C#中接口和类的区别
接口:使用interface关键字声明,将隐式公共方法和属性结合起来,以封装特定功能的一个集合. 类: 只有class关键词修饰的类. 不同点: 1)不能实例化接口 2)接口没有方法的实现 3)接口可 ...
- java的类和接口区别_Java接口和类的区别
一.概述 定义 Comparable是在集合内部定义的方法实现的排序的接口,位于java.util下. Comparator是在集合外部实现的排序的接口,位于java.lang下. Comparabl ...
- java中的stack类和C++中的stack类的区别
文章目录 1 java中的stack类和C++中的stack类的区别 1.1 java中的stack类 1.2 C++中的stack类 1.3 分析 不经意间想到了这个问题,存到栈中的是对象的引用,还 ...
- [转载] 面试题:说说Java中接口、类、成员变量、成员方法、构造方法有哪些访问修饰符和他们的作用范围
参考链接: Java中的访问修饰符 * 问题:说说Java中接口.类.成员变量.成员方法.构造方法有哪些访问修饰符和他们的作用范围 * 答:接口的访问修饰符只有public 1个 * 类的访问修 ...
- c语言中接口和函数的区别,接口与类的关系_接口函数和调用函数有什么区别
描述 接口与类的关系 类与接口是两个概念,不能混淆. 接口概念 程序接口是操作系统为用户提供的两类接口之一,编程人员在程序中通过程序接口来请求操作系统提供服务.面向过程语言最基本的单元是过程和函数. ...
- java类接口的区别_【Java基础】java接口和类的区别-瑶瑶吖的回答
基本语法区别 Java中接口和抽象类的定义语法分别为interface与abstract关键字. 抽象类:在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为 ...
- Java中接口和抽象类的区别
这里说的都是在java8新特性之前的特点.因为在jdk1.7之前,接口是不允许定义方法体的,当然还有一些其他的特性,我这里就不一一列出了.我这篇文章还是说一哈jdk1.7之前的接口和抽象类的区别和联系 ...
- java中抽象类和接口的相同点和不同点_Java中接口和抽象类的区别与相同之处
1. 抽象类: (1).概念:抽象类是对一种事物的抽象,即对类抽..抽象类是对整个类整体进行抽象,包括属性.行为.Java抽象类和Java接口一样,都用来声明一个新的类型.并且作为一个类型的等级结构的 ...
- TypeScript中接口和抽象类
接口和抽象类的出现主要是为了添加参数的限制,来规范代码 接口 TypeScript的核心原则之一是对值所具有的结构进行类型检查. 它有时被称做"鸭式辨型法"或"结构性子类 ...
最新文章
- kubernetes创建资源的两种方式
- Intellij IDEA 使用Spring-boot-devTools无效解决办法
- python包含多个元组的元组_如何在python中将多个”列出的”元组连接成一个元组?...
- java中的显示初始化和特定初始化
- dk7与jdk8环境共存与切换
- gridview控件添加属性
- 2022年05月系统集成项目管理工程师考试知识点分布
- 枚举身份证后四位java代码
- python+opencv代码给证件照换底色
- YS13-3荧光管时钟设计
- 什么是APS高级计划排程(高级计划排产)可视化甘特图,有哪些应用效果?
- 免费国产化Hypervisor系统安装
- 写技术文档需要注意什么
- 输出21世纪中截止某个年份以来的所有闰年年份。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。
- Oracle-Oracle数据库安全管理
- 网易云放音乐加载不出来 CSDN打不开等问题 重新分配IP地址
- 对偶线性规划——问题转化
- 爬虫漫游指南:瑞数的反调试陷阱
- 鼠标滑动两张图片前后对比js插件
- 华为交换机和H3C交换机以及思科交换机常用命令
热门文章
- 阿里云国际站版游戏盾产品详细解析以及防御问题介绍
- 2009年最影响中国企业10大IT事件
- python嵌套函数具体案例_python编程嵌套函数实例代码
- 基于P5“尝试开发”一个“绘画系统”
- photoshop(ps)如何裁剪不规则图片
- 嵌入式Linux应用层开发教程(一)基本概念
- pe进不去linux系统怎么办,u盘启动不了pe系统怎么办_电脑进不去u盘的pe系统解决方法-win7之家...
- flask项目开发到部署笔记
- 把计算机用于科学计算它最显著优势在于,2011年12月统考计算机应用基础 2
- mklink命令——目录的“快捷方式”