1、类类型接口

  1. class Dog{
  2. eat(){
  3. console.log('骨头');
  4. }
  5. run(){
  6. console.log('狗跑步');
  7. }
  8. }
  9. class Cat{
  10. eat(){
  11. console.log('鱼');
  12. }
  13. run(){
  14. console.log('猫跑步');
  15. }
  16. }
  17. //只要是动物类,都需有eat和run方法
  1. // 类类型接口
  2. interface Animal{
  3. eat():void;
  4. run():void;
  5. }
  6. /* 接口就是一套规范,当很多的类型具备相同的特征或者属性,我们可以将这些特征属性单独抽离成一个接口,
  7. 让这些类对这个接口(规范)进行实现 */
  8. class Dog implements Animal{
  9. eat():void{
  10. console.log('骨头');
  11. }
  12. run():void{
  13. console.log('狗跑');
  14. }
  15. }
  16. class Cat implements Animal{
  17. eat():void{
  18. console.log('鱼');
  19. }
  20. run():void{
  21. console.log('猫跑');
  22. }
  23. }
  24. class Fish implements Animal{
  25. eat():void{
  26. console.log('鱼食');
  27. }
  28. run():void{
  29. console.log('游');
  30. }
  31. }
  32. /*
  33. 1、那么一个类实现某个接口以后,必须对接口中的属性和方法进行重写
  34. */

2、属性接口

  1. // 属性接口:
  2. /* 对方法的参数的约束 */
  3. interface Params{
  4. url:string
  5. method:string
  6. // ?:表示这个属性可以有也可以没有
  7. data?:Object
  8. }
  9. function http(d:Params):void{
  10. console.log(d);
  11. }
  12. http({
  13. url:"top250",
  14. method:"get",
  15. data:{
  16. limit:5
  17. }
  18. })
  19. http({
  20. url:"top250",
  21. method:"post"
  22. })

3、函数类型接口

  1. interface encrypt{
  2. // 设置函数的参数和返回值的类型
  3. (key:string,value:string):string
  4. }
  5. var md5:encrypt = function(key:string,value:string):string{
  6. return key+value
  7. }
  8. console.log(md5("key","value"));

4、接口的继承

  1. interface Animal{
  2. name:string
  3. age:number
  4. }
  5. interface Dog extends Animal{
  6. eat(str:string):void
  7. }
  8. class WolfDog implements Dog{
  9. name:string
  10. age:number
  11. eat(str:string):void{
  12. console.log(str);
  13. }
  14. constructor(name:string,age:number){
  15. this.name = name
  16. this.age = age
  17. }
  18. }
  19. var w:WolfDog = new WolfDog("狗",7)