• ts-4: 类型别名与interface


    ------------恢复内容开始------------

    类型别名与interface都可以认为是对'参数'的封装,开发者预先声明一个变量types并对其定义内部数据的数据类型和key,之后就可以在接下来的开发中对这个types变量进行使用。

    一:类型别名 (type alias)

    //声明一个type
    type Alice = {
    name : string,
    age : number
    }
    //使用这个type
    const alice : Aclice = {
    name : '小蛮',
    age : 18
    }
    

    二:interface

    如果type基本体现了封装参数的思想,那么interface就是对封装参数的完美体现
    相较于type可以不用对象格式定义数据,interface规定必须使用对象,且对于参数的可选择性也有了更严谨的拓展:

    // 新建一个接口
    
    interface person {
      name : string,
      age : number ,
      height : number ,
      hobby ?: (string)[], // key后跟问号:表示可选,使用该key前必须确保数据中有该key
      [propname:string] : any , //本行表示允许使用基于person的接口时可以拓展更多属性
      sayHi():string, // 定义了一个sayHi方法,它的返回值为string类型
      readonly id : number // readonly关键字表示该属性只读,只读的约束存在于第一次给**对象赋值**的时候,而不是第一次给只读属性赋值的时候
    }
    const xiaoman  = {
      name : 'xiaoman',
      age:20,
      height:180,
      hobby:['打球'],
      school:'哈工大',
      id:0,
      sayHi(){
        return 'hello,world'
      }
    }
    //使用这个接口
    const gitXM = function (xiaoman : person){
      xiaoman.name && console.log(xiaoman.name)
      xiaoman.age && console.log(xiaoman.age)
      xiaoman.height && console.log(xiaoman.height)
      xiaoman.hobby && console.log(xiaoman.hobby[0])
      xiaoman.school && console.log(xiaoman.school)
    }
    gitXM(xiaoman)
    

    关于接口的拓展

    一个接口本身只能定义一段约束,而不能实现这个约束本身。换句话说,这个接口只能定义而不能实现,想要实现则需要一个实例来实现

    implements关键字:完全实现该接口定义的约束,不能修改

    extends关键字:实现接口定义的约束,但允许有额外的,属于自己内部的方法和属性

    以上。

    作者:致爱丽丝
    本文版权归作者和博客园共有,欢迎转载,但必须在文章页面给出原文链接并标名原文作者,否则保留追究法律责任的权利。
  • 相关阅读:
    Codeforces Round #217 (Div. 2)B. Berland Bingo
    走迷宫1 bnu 1054
    MFC 对话框背景图片
    用Visual C++从位图文件生成任意形状的窗口
    poj 2245 Lotto
    poj 1797 Heavy Transportation
    poj 2253 Frogger
    poj 1125 Stockbroker Grapevine
    B. Books
    【转】阻塞与非阻塞socket的优缺点
  • 原文地址:https://www.cnblogs.com/hjk1124/p/14408595.html
Copyright © 2020-2023  润新知