您的位置:首页 > 其它

ts-4: 类型别名与interface

2021-05-26 04:11 627 查看

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

类型别名与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关键字:实现接口定义的约束,但允许有额外的,属于自己内部的方法和属性

以上。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐