ts中interface与class的区别
interface -- 接口只声明成员方法,不做实现。
class -- 类声明并实现方法。
那么接口有什么用呢?设想如下需求:
要实现一个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."
ts中interface与class的区别的更多相关文章
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- Java中常量定义在interface和class的区别(转)
最终结论:定义常量在interface和class中其实都行,关键是看你的设计和个人爱好. Java中interface中定义变量默认都是"public static final" ...
- Vue实践TS中的一些常见错误解决方案
mixin报错 import { Component, Prop, Vue ,Mixins} from 'vue-property-decorator' import httpminix from ' ...
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- 转载:详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
- Java中抽象类和接口的区别
转载自:http://dev.yesky.com/436/7581936.shtml 在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种 ...
- 详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定 义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和in ...
- hibernate中@Entity和@Table的区别
Java Persistence API定义了一种定义,可以将常规的普通Java对象(有时被称作POJO)映射到数据库.这些普通Java对象被称作Entity Bean.除了是用Java Persis ...
- 转:二十一、详细解析Java中抽象类和接口的区别
转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...
随机推荐
- javaweb学习总结(五)——Servlet开发(一)(转)
转载自 http://www.cnblogs.com/xdp-gacl/p/3760336.html 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun ...
- 自学OpenCV时遇到的一些错误(捂脸ing,当年确实好多不懂...)
6.8/14 opencv环境配置好了, 属性也设置对了, 但是使用VideoCapture类的时候, 还是出错. 右键可以查看其定义, 但是就是 出错. 漏掉了#include "s ...
- 机器学习——深度学习(Deep Learning)
Deep Learning是机器学习中一个非常接近AI的领域,其动机在于建立.模拟人脑进行分析学习的神经网络,近期研究了机器学习中一些深度学习的相关知识,本文给出一些非常实用的资料和心得. Key W ...
- POST/有道翻译 有bug
1.发现在翻译时地址没有变,那是POST请求. 2.通过fidder抓包工具抓取url 3.对data分析,发现每次salt和sign都在变化. 4.查看源码,先用站长工具http://tool.ch ...
- KendoUI 基础:Grid 绑定template展示
Grid 绑定template展示 <div id="TodayEditorGrid" style="margin:0 10px"></div ...
- 浅析JavaScript的字符串查找函数:indexOf和search
语法 ①indexOf:方法可返回某个指定的字符串值在长字符串中首次出现的位置.如果被查找字符串没有找到,返回-1. indexOf 说明:该方法将从头到尾地检索字符串 stringObject,看它 ...
- MySQL相关命令
我们现在初步学习MySQL,下面来简单介绍一下MySQL常用命令 版权归skylinelin所有,转载请注明出处. 首先登录MySQL数据库,"\h"一下看一下帮助信息 这些就是M ...
- 接口json数据与数据库数据循环比对校验
创建测试计划,加载数据库驱动: 线程组: csv配置元件: 注:Filename用的是相对路径,csv文件要与jmeter脚本文件在同一目录 JDBC连接配置: jdbc请求: 用户定义的变量: ht ...
- 【java】对象序列化Serializable、transient
package 对象序列化; import java.io.Serializable; @SuppressWarnings("serial") class A implements ...
- sourceTree git 忽略指定文件
按照如下步骤执行(终端命令) 1. git status modified: LovegoMall.xcworkspace/xcuserdata/Tiny.xcuserdatad/xcdebugger ...