• TypeScript笔记:接口


    1 介绍

    接口是一系列抽象方法的声明,是一些方法特征的集合,这些方法都应该是抽象的,需要由具体的类去实现,

    1. interface interface_name {
    2. }

    接口不能转换为 JavaScript。 它只是 TypeScript 的一部分 

    2 举例

    1. interface IPerson {
    2. firstName:string,
    3. lastName:string,
    4. sayHi: ()=>string
    5. }
    6. var customer:IPerson = {
    7. firstName:"Tom",
    8. lastName:"Hanks",
    9. sayHi: ():string =>{return "Hi there"}
    10. }
    11. console.log("Customer 对象 ")
    12. console.log(customer.firstName)
    13. console.log(customer.lastName)
    14. console.log(customer.sayHi())
    15. /*
    16. Customer 对象
    17. Tom
    18. Hanks
    19. Hi there
    20. */
    21. var employee:IPerson = {
    22. firstName:"Jim",
    23. lastName:"Blakes",
    24. sayHi: ():string =>{return "Hello!!!"}
    25. }
    26. console.log("Employee 对象 ")
    27. console.log(employee.firstName)
    28. console.log(employee.lastName)
    29. /*
    30. Employee 对象
    31. Jim
    32. Blakes
    33. */

    3 使用联合类型的接口

    1. interface RunOptions {
    2. program:string;
    3. commandline:string[]|string|(()=>string);
    4. }
    5. //commandline 可以是一个string,可以是一个string数组,可以是没有输入参数、输出为string的函数
    6. // commandline 是字符串
    7. var options:RunOptions = {program:"test1",commandline:"Hello"};
    8. console.log(options.commandline)
    9. // commandline 是字符串数组
    10. options = {program:"test1",commandline:["Hello","World"]};
    11. console.log(options.commandline[0]);
    12. console.log(options.commandline[1]);
    13. // commandline 是一个函数表达式
    14. options = {program:"test1",commandline:()=>{return "**Hello World**";}};
    15. var fn:any = options.commandline;
    16. console.log(fn());

    4 接口的继承

    接口可以通过其他接口来扩展自己

    Typescript 允许接口继承多个接口

    1. Child_interface_name extends super_interface_name
    2. Child_interface_name extends super_interface1_name, super_interface2_name,…,super_interfaceN_name
    1. interface Person {
    2. age:number
    3. }
    4. interface Musician extends Person {
    5. instrument:string
    6. }
    7. var drummer = <Musician>{};
    8. drummer.age = 27
    9. drummer.instrument = "Drums"
    10. console.log("年龄: "+drummer.age)
    11. console.log("喜欢的乐器: "+drummer.instrument)
    12. /*
    13. 年龄: 27
    14. 喜欢的乐器: Drums
    15. */

    5 多继承示例

    1. interface IParent1 {
    2. v1:number
    3. }
    4. interface IParent2 {
    5. v2:number
    6. }
    7. interface Child extends IParent1, IParent2 { }
    8. var Iobj:Child = { v1:12, v2:23}
    9. console.log("value 1: "+Iobj.v1+" value 2: "+Iobj.v2)
    10. //value 1: 12 value 2: 23

  • 相关阅读:
    【Java】异常
    python异常处理
    Windows系统下,python安装netCDF4步骤
    数据链路层【选择重传协议:为什么发送窗口和接收窗口的大小要小于等于序号的一半】
    求最大公约数
    Spring中Bean的生命周期浅析
    内核中的RCU锁
    常用的Lambda操作
    一、基础算法精讲:双指针
    Socks5代理与代理IP技术:网络工程师的全能武器
  • 原文地址:https://blog.csdn.net/qq_40206371/article/details/133745208