美文网首页
day03-TypeScript-对象与接口

day03-TypeScript-对象与接口

作者: 东邪_黄药师 | 来源:发表于2024-02-26 16:37 被阅读0次

对象

基本使用
JS 中的对象是由属性和方法构成的,而 TS 对象的类型就是在描述对象的结构(有什么类型的属性和方法
对象类型的写法:

// 对象类型
type Person = {
    name: string,
    age: number,
    gender: string,
    hobby: string,
    girlFriend?: string, // ? 表示可选属性
    // sayHi: (content: string) => void
    sayHi(content: string): void
  }

  // ts 就像在写注释, 以前写的注释是给程序员看的, ts 写的类型是给编辑器看的, 程序员也可以看
  let obj1: Person = {
    name: '吕布',
    age: 28,
    gender: '男',
    hobby: '戏貂蝉',
    girlFriend: '大乔',
    sayHi(content) {
      console.log('gello:' + content)
    }
  }

对象可选属性

  • 对象的属性或方法,也可以是可选的,此时就用到可选属性了
  • 比如,我们在使用 axios({ ... }) 时,如果发送 GET 请求,method 属性就可以省略
  • 可选属性的语法与函数可选参数的语法一致,都使用 ?来表示
type Config = {
url: string
method?: string
}
function myAxios(config: Config) {
console.log(config)
}

接口类型

当一个对象类型被多次使用时,一般会使用接口( interface)来描述对象的类型,达到复用的目的

    1. 使用 interface 关键字来声明接口
    1. 接口名称(比如,此处的 IPerson),可以是任意合法的变量名称,推荐以 I 开头
    1. 声明接口后,直接使用接口名称作为变量的类型
    1. 因为每一行只有一个属性类型,因此,属性类型后没有 ;(分号)
interface IPerson {
    username: string
    age: number
    gender: string
    sayHi: () => void
  }
  const p1: IPerson = {
    username: '李连杰',
    age: 38,
    gender: '未知',
    sayHi() {
      console.log('曾经的世界武术冠军')
    }
  }
p1.sayHi()

interface 和 type的对比

相同点:都可以给对象指定类型
不同点:

  • 1.接口,只能为对象指定类型
  • 2.类型别名,不仅可以为对象指定类型,实际上可以为任意类型指定别名
    推荐:能使用 type 就是用 type

接口继承

如果两个接口之间有相同的属性或方法,可以将公共的属性或方法抽离出来,通过继承来实现复用
使用 extends (继承)关键字实现了接口 objA 继承 objB

interface IPerson {
    username: string
    age: number
    gender: string
    sayHi: () => void
  }
  const p1: IPerson = {
    username: '刘帮',
    age: 38,
    gender: '未知',
    sayHi() {
      console.log('我是榜一刘帮, i\'m rich')
    }
  }

  p1.sayHi()

  // 接口继承: IStudent 具备 IPerson 的所有约束规则
  interface IStudent extends IPerson {
    score: number
    sleep: () => void
  }

  const s1: IStudent = {
    username: '刘颖',
    age: 18,
    gender: '男',
    sayHi() {
      console.log('我是榜一刘颖, i\'m rich')
    },
    score: 59,
    sleep() {
      console.log('刘颖正在睡觉...')
    },
  }

  s1.sayHi()
  s1.sleep()

使用 type 实现和 interface 类似继承的效果

type Person = {
    username: string
    age: number
    gender: string
    sayHi: () => void
  }

  // & 与连接符: 既要满足前面的也要满足后面的
  // | 或连接符: 满足其中一个即可
  type Student = {
    score: number
    sleep: () => void
  } & Person

  const s2: Student = {
    username: '刘子昂',
    age: 28,
    gender: '未知',
    sayHi() {
      console.log('大嘎好!')
    },
    score: 80,
    sleep() {
      console.log('我在睡觉')
    },
  }

相关文章

  • Java 工厂方法模式

    在工厂对象上调用创建方法,生成接口的某个实现的对象 通过这种方式,接口与实现分离 方法接口 工厂方法接口 方法实现...

  • 装饰者模式(Decorator)

    统一接口 提供一个同一的接口同目标对象与装饰对象实现 目标对象 目标对象包装类 在调用目标对象业务方法前后,可以有...

  • Kotlin——面向对象(4)

    1、面向对象-抽象类与接口 1)什么是接口接口,直观理解就是一种约定kotlin的接口与Objcet-C的Prot...

  • 接口

    一个类实现多个接口,用,分开. 父类 对象名 = new 子类(); 接口 名字 = new接口的实现类 接口与抽...

  • ★01.设计模式概念

    一个对象的所有操作统称为接口。 拥有同一接口的两个对象为同一类型。 类与类型的区别:类定义了对象的接口和数据(内部...

  • 【设计模式】代理模式

    角色介绍 抽象对象角色:AbstractObject 目标对象与代理对象共同接口,任何可以使用目标对象的地方都可以...

  • ABAP对象-继承与接口

    1 继承 1 多态性的继承实现 在继承中,多态性是通过方法重载及引用变量实现的。即子类可以重新定义 并以不同的方式...

  • 面向对象-继承与接口

    算是读书笔记吧 极客时间--设计模式之美 抽象类 抽象类实际上就是类,只不过是一种特殊的类,这种类不能被实例化为对...

  • 面向对象-抽象与接口

    代码块 局部代码块 写在方法内部的代码块 局部代码块:有什么用? 1.没什么用:if for while 控制代码...

  • Java 对象与类,对象与接口,类与接口之间的关系判断。

    (new yy()) instanceof xx.class 判断 yy对象 否是 xx类 的实例xx.class...

网友评论

      本文标题:day03-TypeScript-对象与接口

      本文链接:https://www.haomeiwen.com/subject/fkfzadtx.html