1 什么是接口
接口是一系列抽象的声明,是一些方法特征的集合,这些方法都应该是抽 象的,
需要由具体的类去实现,然后第三方就可以通过这组抽象方法调用,让具体的类执行具体的方法
接口也是一种数据类型
格式:
interface interface_nane {}
2 接口的基本使用
// 声明一个接口
interface IPersonType {
readonly name: string // 定义只读属性
age: number, // 定义普通number类型的属性
friend?: { // 定义可选属性
name: string
}
}
// 定义一个person变量,变量的类型为IPersonType
const person: IPersonType = {
name: "lucy",
friend: {
name: "jack"
}
}
// 使用变量
console.log(info.friend?.name)
console.log(info.name)
关于接口的基本使用有一些注意点:
-
给接口命名时,可以使用大写的
I字母开头,代表这是个接口(interface) -
接口的定义和类有些相似,都可以使用可选属性和只读属性
-
声明对象类型更推荐使用接口的方式,而不是用
type关键字:void(不返回值) interface IFullName{ firstName:string, lastName:string } let goddassName:IFullName={ firstName:"杨", lastName:"超越" } console.log(goddassName.firstName); console.log(goddassName.lastName); function say({firstName,lastName}:IFullName):void{ console.log(`精灵古怪:${firstName}${lastName}`); } say(goddassName)
3 可选属性与只读属性
可选属性使用:?
只读属性使用: readonly
readonly与const的区别:做为变量使用的话用const,若做为属性则使用readonly
// 可选属性 使用?来进行修饰
interface IFullName{
firstName:string,
lastName:string,
age?:number
}
let goddassName:IFullName={
firstName:"杨",
lastName:"超越"
}
console.log(goddassName.firstName);
console.log(goddassName.lastName);
// 只读属性 readonly
interface IInfo{
readonly uanme:string;
readonly uage:number;
}
let beauty:IInfo={
uanme:"汉库克",
uage:18
}
4 索引签名
定义:索引签名用于描述那些“通过索引得到”的类型
格式:如[props: string] :any
应用场景:解决参数问题
interface IFullName{
firstName:string
lastName:string
age?:number
singName?:string
[props:string]:any
}