接口定义行为和动作的规范
1.属性接口
//传入对象 要带有label 并且label的值为string类型
function printLabel(labelInfo:{label:string}):void{
console.log('接口函数')
}
printLabel({label:'登记'})
1.属性接口 规定了传入参数的值必须包含哪几项
//属性接口,规定了传入参数的值
//传入值的时候 严格按照接口来,接口让穿啥就穿啥
interface FullName{
firstName:string; //注意以;结束
secondName:string;
}
function printName(name:FullName){
//必须传入对象,要有firstName secondName
alert(name.firstName + name.secondName)
}
var obj = {
age:23,
firstName:"王",
secondName:'金毅'
}
printName(obj)
接口可选属性
interface FullName{
firstName:string;
secondName?:string;//secondName可传可不传
}
function pringName(name:FullName):void{
alert(name.firstName + name.secondName)
}
let obj = {
age:10,
firstName:'王'
}
pringName(obj)
函数类型接口
//函数类型接口:对方法传入的参数 以及返回值进行约束
//例子: 加密的函数类型接口
interface encrypt{
(key:string,value:string):string
}
var md5:encrypt = function(key:string,value:string):string{
//模拟
return key+value
}
console.log(md5('key密码','value密码'))
可索引接口
//可索引接口 对数组和对象 约束(用处少)
interface UserArr{
[index:number]:string;
}
//规定数组的索引为 number 类型 数组中的值 为string类型
var arr1:UserArr = ['123','123']
//可索引接口 对 对象的约束(不常用)
interface UserObj{
[index:string]: string;
}
var arr1:UserObj = {name:'wangjinyi'}
类类型接口
总结:接口和接口之间叫继承(使用extends关键字),类和接口之间叫实现(使用的是implements关键字)
//类类型接口 对类进行约束 和抽象类 相似
//父类定义标准化 流程
//必须有string 类型的name 和eat方法
interface Anmial{
name:string;
eat(str:string):void;
}
class Dog implements Anmial{
name:string
constructor(name:string){
this.name = name
}
eat(){
console.log(this.name + '吃肉')
}
}
var d = new Dog('哈士奇')
d.eat();
//一个类可以实现多个接口
interface Animal{
name:string,
eat(str:string,food:string):void
}
interface AnimalAge{
age:number,
myAge(Num:number):void
}
class Dog implements Animal,AnimalAge{
name:string
age:number
constructor(name:string,age:number){
this.name = name
this.age = age
}
eat(food:string){
console.log(`${this.name}在吃${food}`)
}
myAge(){
console.log(`${this.name}今年${this.age}岁了`)
}
}
const dog1 = new Dog('哈士奇',12)
dog1.eat('牛排 ');
dog1.myAge();
//一个接口可以继承多个接口
//定义一个接口,用来继承多个接口
interface AnimalALL extends Animal,AnimalAge{}
class Cat implements AnimalALL{
name:string
age:number
constructor(name:string,age:number){
this.name = name
this.age = age
}
eat(food:string){
console.log(`${this.name}在吃${food}`)
}
myAge(){
console.log(`${this.name}今年${this.age}岁了`)
}
}
const cat1 = new Cat('马达',3)
cat1.eat('猫粮罐头');
cat1.myAge();
接口继承
//接口继承 接口继承接口
// 接口继承中 最后拥有所继承接口中的所有规范
interface Animal{
eat(str:string):void
}
interface People extends Animal{
work(str:string):void
}
class Web implements People{
name:string
constructor(name:string){
this.name = name
}
eat(){
console.log('这个是Animal接口中的eat方法')
}
work(){
console.log('这个是People接口中的work方法')
}
}
var 人 = new Web('王金印')
人.eat();
例子:即使用继承,又实用类类型接口
// 接口继承中 最后拥有所继承接口中的所有规范
interface Animal{
eat(str:string):void
}
interface People extends Animal{
work(str:string):void
}
class Coder{
public name:string
constructor(name:string){
this.name = name
}
code(codeing:string){
console.log(this.name+codeing)
}
}
class Web extends Coder implements People{ //即使用继承 又实用接口
constructor(name:string){
super(name)
}
eat(){
console.log('这个是Animal接口中的eat方法')
}
work(){
console.log('这个是People接口中的work方法')
}
}
var 人 = new Web('王金印')
人.eat();
人.code('在写ts代码')
1