主题
接口interface
interface
属性类接口
函数类型接口
可索引接口
类类型接口
接口扩展接口的作用:
在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。
接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。
typescrip中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类等。属性接口 对json约束
行为和动作的规范 对批量方法进行约束
interface fullName{
firstName:string;
lastName:string;
}
function printName(name:fullName){
console.log(name.firstName+'----'+name.lastName)
}
var obj={
firstName:'hbc',
lastName:'zrf',
age:24
}
printName(obj)可选属性接口
interface fullName{
firstName?:string;
lastName:string;
}只读属性接口
interface fullName{
readonly firstName?:string;
lastName:string;
}函数类型接口
加密函数类型接口
interface excrypt{
(key:string,value:string):string;
}
var md5:excrypt=function(key:string,value:string):string{
//模拟操作
return key+value;
}
console.log(md5('name:','haob'))可索引接口 数组 对象的约束 (不常用)
数组约束
interface UserArr{
[index:number]:string
}
var arr:UserArr=['aaa','bbb']
console.log(arr[0])对象的约束
interface UserObj{
[index:string]:string
}
var arr:UserObj={name:'20'}类类型接口:对类的约束 和抽象类相似
interface Animal{
name:string;
eat(str:string):void
}
class Dog implements Animal{
name:string;
constructor(name:string){
this.name=name
}
eat(){
console.log('eat')
}
}
var d=new Dog('haob');
d.eat()接口扩展:接口可以继承接口 extends
interface Animal{
eat(str:string):void
}
interface Person extends Animal{
word():void;
}
class Prog{
public name:string;
constructor(name:string){
this.name=name;
}
coding(code:string){
console.log(code)
}
}
class Web extends Prog implements Person{
constructor(name:string){
super(name)
}
eat(){
console.log('eat')
}
word(){
console.log('word')
}
}
var d=new Web('haob');
d.eat();
d.word();
d.coding('code哈哈')