• TypeScript接口


           接口是一种规范的定义,它定义了行为和动作的规范;在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。

    一、接口类别:

       1、属性接口对传入对象的约束

    1. interface IPeople {
    2. name:string;
    3. age:number;
    4. }
    5. function printPeople(person:IPeople) {
    6. console.log("姓名:"+person.name);
    7. console.log("年龄:"+person.age);
    8. }
    9. printPeople({name:'张三',age:25}); //正确
    10. printPeople("123");//错误
    11. printPeople({name:'李四',age:26,sex:'男'});//错误

           可选接口:接口中的属性是可选的

    1. interface IPeople {
    2. name:string;
    3. age?:number;
    4. }
    5. function printPeople(person:IPeople) {
    6. console.log("姓名:"+person.name);
    7. console.log("年龄:"+person.age);
    8. }
    9. printPeople({name:'张三',age:25}); //正确
    10. printPeople({name:'王五'}); //不传age也可以,但是接口中age后必须带?
    11. printPeople("123");//错误
    12. printPeople({name:'李四',age:26,sex:'男'});//错误

          2、函数类型接口:对方法传入的参数以及返回值进行约束

    1. //加密的函数类型接口
    2. interface encrypt {
    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('deyun','Web前端'))

           3、可索引接口:对数组和对象的约束(不常用)

    1. //对数组的约束
    2. interface UserArr {
    3. [index:number]:string; //字符串类型数组,数组的索引为number类型
    4. }
    5. var arr: UserArr = ["12","李四","aaa"];//正确
    6. var arr1: UserArr = [1,"李四",a]; //错误
    7. //对对象的约束
    8. interface UserObj {
    9. [index:string]:string;
    10. }
    11. var obj:UserObj = { "姓名":"张三","性别":"男" }; //正确
    12. var obj1: UserObj = []; //错误

             4、类类型接口:对类的约束

    1. interface IAnimal {
    2. sleep(): void;
    3. eat(): void;
    4. }
    5. class Dog implements IAnimal{
    6. eat(): void {
    7. console.log("狗狗在吃肉...");
    8. }
    9. sleep(): void {
    10. console.log("狗狗在睡觉:呼呼...")
    11. }
    12. }

    二、接口继承:接口继承就是说接口可以通过其他接口来扩展自己。TypeScript 允许接口继承多个接口。继承使用关键字 extends。

           1、单接口继承语法格式:

    Child_interface_name extends super_interface_name

            示例:

    1. interface Shape {
    2.     color: string;
    3. }
    4. interface Square extends Shape {
    5.     sideLength: number;
    6. }
    7. let square = <Square>{};
    8. square.color = "blue";
    9. square.sideLength = 10;
    10. console.log(square)

              2、多接口继承语法格式:

    Child_interface_name extends super_interface1_name

            示例:

    1. interface Shape {
    2.     color: string;
    3. }
    4. interface PenStroke {
    5.     penWidth: number;
    6. }
    7. interface Square extends Shape, PenStroke {
    8.     sideLength: number;
    9. }
    10. let square1 = <Square>{};
    11. square1.color = "blue";
    12. square1.sideLength = 10;
    13. square1.penWidth = 5.0;
    14. console.log(square1)

  • 相关阅读:
    Apache HTTPD 换行解析漏洞(CVE-2017-15715)
    财务RPA与数字化转型——财务RPA如何促进企业的数字化转型
    基于SSM微信小程序的邢台市域直通公交毕业设计-附源码211514
    JAVA——》模拟虚拟机栈溢出
    74ls192无法正常使用。
    数据库设计:实体关系图
    Vision-Dialog Navigation和Vision-and-Language Navigation简单总结
    数据库MYSQL面试篇(1)
    一文讲解Linux Scheduler之rt选核流程
    免费的MySQL连接工具
  • 原文地址:https://blog.csdn.net/m0_37911706/article/details/125604972