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的主要内容,如果未能解决你的问题,请参考以下文章