第二天:TypeScript的InterFace接口、类、修饰符、抽象类、implements
一、interface接口--自定义一个约束结构
1.1 使用
注意:1.首字母I要大写 2.结束是;结尾
interface Idata{a:number;b:string;
}let obj1:Idata={a:1,b:'你好'
}
1.2 复杂的写法
interface Ilist{list:{id:number;name:string;}[]
}interface Idata{message:string;success:boolean;data:Ilist
}let data:Idata = {message:'成功',success:true,data:{list:[{id:1,name:'张三'},{id:2,name:'李四'}]}
}
二、interface继承
//继承后为累加
interface Idata{message:string;success:boolean;data?:{}
}interface Ires extends Idata{children?:[];
}
三、类
class Person{userName:string;userAge:number;constructor( name:string, age:number ){this.userName = name;this.userAge = age;}run( a:number, b:number ):number {return a+b;}}new Person( '张三' , 18 ).run(1,2);
四、修饰符
readonly 只读
public 公开的,在任何地方都可以访问
protected 受保护的,只能在当前类和当前类的子类内部使用
private 私有的,当前类的内部使用
//readonly 只读
interface Iobj{readonly a:number,b:number,
}
let obj:Iobj={a:1,b:2,
}
//没用readonly时,可以这样更改a的值;用了readonly后,会报错,因为此时a为只读,不可修改
obj.a=555//public 公开的,在任何地方都可以访问
//protected 受保护的,只能在当前类和当前类的子类内部使用//demo1
class Person{protected userName:string;public userAge:number;constructor( name:string, age:number ){this.userName = name;this.userAge = age;}run( ):string {return this.userName}}
let p1=new Person('张三',123)
//此时访问userName会报错,因为是protected
console.log(p1.userName);
//此时运行ok,因为run是类内部的
p1.run()//demo2
class Person{protected username:string
}
class Child extends Person{run(){return this.username}
}
let c=new Child
//访问会报错
console.log(c.username);
//通过内部的函数访问父类受保护的属性是OK的
c.run()//private 私有的,当前类的内部使用class Person{private username:string
}
class Child extends Person{run(){return this.username}
}
let c=new Child
//通过内部的函数访问父类私有的属性也会报错
c.run()
五、抽象类abstract
5.1 不完成具体的功能
5.2 抽象类不能new
5.3 抽象类可以继承,如果要继承,就必须实现该类的抽象方法
//1.不完成具体的功能//以下例子demo1会报错,抽象类不实现run功能
abstract class Person{abstract run(){return 1111;}
}//2.抽象类不能new
//demo2为抽象类new会报错
abstract class Person{abstract run():voidabstract change():void}
let c=new Person//3. 抽象类可以继承,如果要继承,就必须实现该类的抽象方法//demo3实现抽象类的继承
abstract class Person{abstract run():voidabstract change():void}
class child extends Person{run():void{}change():void{}
}
六、implements对于类的约束
//单个约束
interface Ip1{name:string;age:number;
}
class Person implements Ip1{name:string;age:number;
}//多个约束
interface Ip1{name:string;age:number;
}
interface Ip2{change():void
}
class Person implements Ip1,Ip2{name:string;age:number;change(){};
}
//如果没有change,则会报错
class Person implements Ip1,Ip2{name:string;age:number;
}
第二天:TypeScript的InterFace接口、类、修饰符、抽象类、implements相关推荐
- C#基础--类/接口/成员修饰符,多态、重载、重写,静态和非静态
C#基础--类/接口/成员修饰符,多态.重载.重写,静态和非静态 类/接口/成员修饰符 C#修饰符---接口: 接口默认访问符是internal 接口的成员默认访问修饰符是public C#修饰符-- ...
- C#的类修饰符和成员修饰符
一.类修饰符 类修饰符:public.internal. partial.abstract.sealed.static.new.protected.private.protected internal ...
- 有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,各有一个main函数,谁在前先执行谁!
发现一有趣现象:同一个java文件中有2个类,一个public,一个无类修饰符,个有一个main函数,谁在前先执行谁! //Detergent.java //Class:Detergent,Clean ...
- java中类的修饰符_Java中的类修饰符
之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这样比较规范,可主要原因是我是在不知道怎么在一个文件里放多个类,可见java基础有多差了...只要把类的属性改成默认的就可以了,也 ...
- Java接口的修饰符
Java接口的修饰符可以为(D) A.private B. protected C.final D.abstract 接口: (1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须 ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- java 类修饰符、成员变量修饰符、方法修饰符总结
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- java接口的修饰符可以为,附架构师必备技术详解
第一章 MySQL入门与初步 1.1 MYSQL 简介 1.2 关系数据库管理系统 1.3 MYSQL 使用的 SQL 语言 1.4 MYSQL 数据处理 第二章 MySQL的安装 2.1 MYSQL ...
- 基本语法及基本概念概述(标识符、访问修饰符、变量、数组、枚举、注释、空行、继承、接口、(对象、类、方法、实例变量)、关键字表)
文章目录 1.标识符 2.标识符命名规范 3.访问修饰符 4.变量 5.数组 6. 枚举 7.注释 8.空行 9.继承 10.接口 11.对象.类.方法.实例 12.关键字表 13.保留字(reser ...
- 最全Java各修饰符详解(接口、类、方法、变量)
一.总述 类.方法.成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - p ...
最新文章
- typescript语法高亮插件_JavaScript开发者必备的10个Sublime Text插件
- 过直线上一点画垂线图_苏教版四年级数学上册8.5认识垂直、点到直线的距离微课视频 | 练习...
- 实验二《Java面向对象程序设计》实验报告
- CI/CD(持续集成构建/持续交付):如何测试/集成/交付项目代码?(Jenkins,TravisCI)
- JZOJ 1286. 太空电梯
- .com才是顶级域名,baidu.com是二级域名
- 【数据融合】基于matlab拓展卡尔曼滤波IMU和GPS数据融合【含Matlab源码 1600期】
- 商城APP开发关键板块
- 圣诞礼物|2020年送这些礼物你就能拥有一个程序员男朋友
- 一元享移动怎么样_移动推出头条爽卡:9元每月享免流特权,流量1元800M每天
- axure如何竖立文字_Axure pr 如何让文字显示为竖着的?
- 自动分发秘钥脚本(复制修改ip即可使用)
- 宏记录器 Macro Recorder 2.0 注册版
- 恒驰冬测 恒大汽车迎性能大考
- 钉钉全栈化实践总结-前端篇
- IROS 2017观察:机器人研究产业化加速,中国企业如何借力升级?
- 【企业架构设计实战】大数据架构最佳实践
- Kafka 消息传递语义 Exactly Once(精准一次) 相关知识
- matlab绘制步进频率信号,雷达信号处理MATALB模拟---频率步进信号SFWC
- 深度包检测库nDPI
热门文章
- java怎么实现复杂的考勤计算_考勤系统之计算工作小时数
- c8500刷机 转帖
- 算法打卡Ques20201009
- 【Error】Win10/Python3.9安装dlib报错:subprocess.CalledProcessError以及解决方法
- WPS:添加公式后,行间距变宽的解决方法
- 2015年河南省省赛部分题题解
- 金蝶k3服务器系统吗,金蝶k3能在云服务器上吗
- 六、CSS3的美化字体与段落
- springboot集成easypoi实现excel多sheet导出,并设置表头样式
- android 陀螺仪传感器性能损耗,传感器专题(3)——加速度/陀螺仪传感器