热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

cocoscreatorTS使用详解二

***接口的作用,在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到

/*** 接口的作用,在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用接* 接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,他只规定这批类里面必须提供* 某些方法,提供这些方法的类就可以满足实际需要,typescript中的接口类似于java,同事还增加了更灵活的接口类型,包括属性、函数、* 可索引和类等。* 接口是定义的规范,可以复用* 关键字 interface*/
// 1. 属性接口 对json的约束//ts定义方法只能对单一,进行约束
function printLabel(labelInfo: {label: string}): void {console.log(labelInfo.label)
}
// printLabel({name:"张三"})//错误写法
printLabel({label: '李四'
}) //正确写法 传入参数必须有label// 属性接口 对批量方法传人参数进行约束interface FullName {firstName: string; //注意以;结束secondName: string;
}function printName(info: FullName) {//必须传入对象 firstName secondNameconsole.log(info.firstName + info.secondName)//info.age,虽然传人了,但是在FullName中未定义,报错,所以严格按照接口要求
}
//printName({firstName:'firstName'}) //错误,约束必须传入对象 firstName secondName// printName({
// firstName:'张',
// secondName:'三' ,
// age:20 //报错 这种写法,传入值只能包含接口定义的属性
// })
//这样定义在外部就可以传入接口写未定义的属性,但是不能在方法中使用,因为未定义该属性var obj = { //这里的obj为interface类型,不能定义为objectfirstName: '张',secondName: '三',age: 20
}
printName(obj);//接口可选属性
interface FullName2 {firstName: string;lastName?: string; //可选属性
}function printName2(info: FullName2) {console.log(info.firstName + info.lastName) //张 undefined
}
printName2({firstName: '张'
})/*2. 函数类型接口:对方法传人的参数 以及返回值进行约束 */// 加密的函数类型接口
interface encrypt {(key: string, value: string): string
}
//模拟一下
var md5: encrypt = function (key: string, value: string): string {//模拟进行了加密算法return key + value
}
console.log(md5('123', '456'))/* 可索引接口, 数组,对象的约束(不常用) */
interface UserArr {[index: number]: string
}
var ar: UserArr = ['aaa', 'bbb']
console.log(ar[0])
/* 可索引接口 对对象的约束 */
interface UserObj {[index: string]: string
}
var obj1: UserObj = { name: '张三', age: '20' }/* 类类型接口: 对类的约束 和 抽象类有点相似 */
interface Anima {name: string;eat(str: string): void;
}
class Pig implements Anima {name: string;constructor(name: string) {this.name = name;}eat(str: string) {console.log(this.name + str)}
}
var pig = new Pig('小猪')
pig.eat('粮食')/*接口扩展:接口可以继承接口 */
interface Props {eat(): void;
}
//继承接口
interface Pepole extends Props {work(): void;
}
//待继承的类
class Programmer {public name: string;constructor(name: string) {this.name = name}coding(code: string) {console.log(this.name + code)}
}class Webs extends Programmer implements Pepole {constructor(name: string) {super(name)this.name = name}eat() {console.log(this.name + '吃饭')}work() {console.log(this.name + "写代码")}
}
var webs = new Webs('小王')
webs.eat()
webs.work()
webs.coding('写ts')const { ccclass, property } = cc._decorator;@ccclass
export default class NewClass extends cc.Component {}


推荐阅读
author-avatar
六道轮回2602906501
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有