cocos creator TS 使用详解二
Posted LANGZI7758521
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos creator TS 使用详解二相关的知识,希望对你有一定的参考价值。
/**
* 接口的作用,在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用接
* 接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,他只规定这批类里面必须提供
* 某些方法,提供这些方法的类就可以满足实际需要,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 secondName
console.log(info.firstName + info.secondName)
//info.age,虽然传人了,但是在FullName中未定义,报错,所以严格按照接口要求
}
//printName({firstName:'firstName'}) //错误,约束必须传入对象 firstName secondName
// printName({
// firstName:'张',
// secondName:'三' ,
// age:20 //报错 这种写法,传入值只能包含接口定义的属性
// })
//这样定义在外部就可以传入接口写未定义的属性,但是不能在方法中使用,因为未定义该属性
var obj = { //这里的obj为interface类型,不能定义为object
firstName: '张',
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 {
}
以上是关于cocos creator TS 使用详解二的主要内容,如果未能解决你的问题,请参考以下文章