ts接口 interface

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ts接口 interface相关的知识,希望对你有一定的参考价值。

参考技术A

概念:可以用来约束一个函数,对象,以及类的结构和类型

1.对象类型的接口

2.函数类型的接口

3.混合类型的接口(一个接口既可以定义一个函数,也可以定义一个对象)

Ts接口的使用

TypeScript 的核心原则之一是对值所具有的结构进行类型检查。我们使用接口(Interfaces)来定义对象的类型。接口是对象的状态(属性)和行为(方法)的抽象(描述)

接口初探

需求: 创建人的对象, 需要对人的属性进行一定的约束

id是number类型, 必须有, 只读的
name是string类型, 必须有
age是number类型, 必须有
sex是string类型, 可以没有

下面通过一个简单示例来观察接口是如何工作的:
可选属性: ?
只读属性: readonly

/* 
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型
接口: 是对象的状态(属性)和行为(方法)的抽象(描述)
接口类型的对象
    多了或者少了属性是不允许的
    可选属性: ?
    只读属性: readonly
*/

/* 
需求: 创建人的对象, 需要对人的属性进行一定的约束
  id是number类型, 必须有, 只读的
  name是string类型, 必须有
  age是number类型, 必须有
  sex是string类型, 可以没有
*/

// 定义人的接口
interface IPerson 
  readyonly id: number
  name: string
  age: number
  sex?: string


const person1: IPerson = 
  id: 1,
  name: 'tom',
  age: 20,
  sex: '男'

类型检查器会查看对象内部的属性是否与IPerson接口描述一致, 如果不一致就会提示类型错误。

可选属性

接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。

interface IPerson 
  id: number
  name: string
  age: number
  sex?: string

带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个 ? 符号。

可选属性的好处之一是可以对可能存在的属性进行预定义,好处之二是可以捕获引用了不存在的属性时的错误。

const person2: IPerson = 
  id: 1,
  name: 'tom',
  age: 20,
  // sex: '男' // 可以没有

只读属性

一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用 readonly 来指定只读属性:

interface IPerson 
  readonly id: number
  name: string
  age: number
  sex?: string

一旦赋值后再也不能被改变了。

const person2: IPerson = 
  id: 2,
  name: 'tom',
  age: 20,
  // sex: '男' // 可以没有
  // xxx: 12 // error 没有在接口中定义, 不能有

person2.id = 2 // error

readonly vs const

最简单判断该用 readonly 还是 const 的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用 readonly。

以上是关于ts接口 interface的主要内容,如果未能解决你的问题,请参考以下文章

接口隔离原则 Interface Segregation Principle

如何在Java中使用通用接口获取实现类中的方法

Java 8 接口方法中不允许“同步”的原因是啥?

Spring控制反转的最简单说明

ts接口 interface

ts的接口