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关键字:实现接口定义的约束,但允许有额外的,属于自己内部的方法和属性
以上。
相关文章推荐
- TS学习笔记(ts基础类型 类型别名)
- opencl:C++11下使用别名(x,y,z,hi,lo...)访问vector类型(cl_int2,cl_long16...)的元素
- 联合、枚举和类型别名 - C++快速入门13
- MyBatis简单实现中出现的一些细节性的问题(进阶性问题)1.类型转换器;2.设置单个别名;3.将配置数据信息中的代码变得更简洁。4.statement的简单化
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
- 类型即正义:TypeScript 从入门到实践(三):类型别名和类
- 时间序列分析:ts/mts基础数据类型
- golang--从类型转换角度看interface
- 将默认值绑定到列或绑定到别名数据类型
- 类型别名(直接替换要谨慎!)
- Swift Assertion断言/类型别名/类型转换
- MyBatis源码解析(八)——Type类型模块之TypeAliasRegistry(类型别名注册器)
- C++11快餐教程(1)-通过using定义类型的别名
- 类型双关(type punning)与严格别名(strict aliasing)
- GTK的非实例化类型-interface
- JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)
- 联合、枚举和类型别名 - C++快速入门13
- 宏(#define)和类型别名(typedef)在结构和共用体(联合体)类型定义中的应用
- Swift编程语言学习1.5——类型别名、布尔值、元组
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma