【Cocos TypeScript 零基础 1.1】


TypeScript 一般情况简述为 TS
本章节为本人自己归纳总结,如有错误请指正,谢谢

TS在线练习地址

点击跳转

https://www.typescriptlang.org/zh/play/?#code/Q

基础数据类型

入门

let str1 : string = '你好'  //  字符串
let num1 : number = 1 //  数字
let bool : boolean = true //  布尔值
let sz1 : string[] = ['你好','世界']  //  数组 字符串
let sz2 : number[] = [123,321]  //  数组 数字
const x1 : number = 3.14	//	常量	一般不能人为修改

关于数组,我之前写过一篇文章想要了解的自行跳转
数组相关_点击跳转
初级

//	枚举
enum  mj1 {Red,Green,Blue}
console.log('',mj1.Red)
enum  mj2 {Red = '#f00' , Green = '#0f0' , Blue = '#00f'} //  枚举赋值
console.log('',mj2.Red)
//	字典
let zd1 : { [key:number] : number}	//	字典定义
zd1 = {1:90 ,2:88 ,3:84}	//	字典赋值
console.log( zd1[1] )	//	字典调用
let zd1 : { [key:number] : number} = {1:90 ,2:88 ,3:84}	//	可以定义赋值一起写

注意
字典的调用时,用的是KEY值,并不是数组的排序
HarmonyOS 好像没办法用字典 IDE报错

//	对象
interface dx { name:string , age:number }	//	对象定义
let dx1 : dx = {name : '123' , age : 123}	//	对象创建并赋值
console.log('',dx1.name)	//	对象调用
//变量回调函数
let fun1 : ()=>{}

符号

加减乘除

没什么好讲的

let a : number
a = 1 + 1
a = 1 - 1
a = 1 * 1
a = 1 / 1

注意

a++
a+=1
a = a + 1

这3个运算表达式结果是一样的

注释

注释并不影响程序的运行,是给人看的,机器会跳过

//单行注释

/*
多行注释,有些IDE可能会引用来提示,比如微信小程序
*/

比较运算符

这个也简单

let a : number = 0
let b : number = 1
console.log(a < b)
console.log(a > b)
console.log(a == b)
console.log(a <= b)
console.log(a >= b)

赋值

一个等 是常规赋值

a = 5

注意
一个等 是赋值
两个等 是比较值是否相等
三个等 是值和类型都相等才返回 true
深拷贝
在实际开发中会遇见多重数组等情况
为了人便于识别会额外赋值,只做常规赋值操作会导致指针仍在原位
例如:

a : number[][] = [[99,98] , [88,87]]
b = a[0]
b[0] = 77
console.log(a)

修改 b0 会导致修改 a00
如果 b 是单独的数组,只是借用 a0 的数据
这就需要深拷贝(深复制,深赋值)

b = JSON.parse(JSON.stringify(a[0]))

逻辑运算符

//	与	&&	条件都满足返回真
//	或	||	条件满足其一返回真
//	非	!	结果取反

console.log('逻辑',a < b && a == b)
console.log('逻辑',0 < a || 0 < b)

三目运算(三元条件表达式)

let a : number = 45
let b : number = 65
a < b ? a++ : a--
console.log(a)

上面代码的意思就是
如果 a 小于 b 则执行 a+1 , 否者执行 a-1

if 语句

let a : number = 45
let b : number = 65
a < b ? a++ : a--	//	三目运算
if (a < b){a++} //  如果 a 小于 b 则执行 a++
if (a < b){a++} else {a--}	//	和三目运算的意思一样	写法不一样而已

更多分支 (其实上面的也叫分支)

if (a == 45) console.log('=45')	//	如果 a 等于 45 则打印 =45
else if (a == 46) console.log('=46') //	这是第二个判断,基于第一个判断,如果第一个判断条件成立,则后续代码不会执行
else console.log('>46')	//	else 是所有分支条件都不满足则执行 else 的内容

小技巧
if 判断条件后 只有一条执行内容,可以不写大括号(花括号)
switch 语法
更多分支还有另一种写法,意思是一样的

switch (a){
    case 45 : console.log('=45')
    break;	//	跳出判断
    case 46 : console.log('=46')
    break;
    default : console.log('>46')
}

循环

for 循环

for (let x : number = 0 ; x < 5 ; x++ ) { console.log( x ) }

运行步骤

  1. 创建变量并赋值
  2. 判断条件
  3. 为真 执行花括号代码 ( 为假 则结束循环 )
  4. 再执行自增
  5. 再次条件判断

我习惯使用 for 循环,所以我觉得 for 使用更多
for of
历遍数组内的值,语法更简洁
break 跳出循环
continue 跳出当前循环

for (let item of sz1){
    if ( item == '小芳') break
}

练习
这个练习很有意思,SiKi老师有讲解
点击跳转_原视频讲解
水仙花数 : 个位立方 + 十位立方 + 百位立方 = 水仙花数

for ( let num : number = 100 ; num < 1000 ; num++ ) {
    let sum : number = 0
    let n1 = num % 10 //    得到个位数
    let n2 = (num - n1) / 10 % 10   //   得到十位数
    let n3 = (num - n2*10 - n1) / 100 // 得到百位数
    sum = n1*n1*n1 + n2*n2*n2 + n3*n3*n3
    if (num == sum) console.log('水仙花数',num)
}

九九乘法表
我自己写的方法,花了丢丢时间

let txt : string = `\n`
for (let a : number = 1 ; a < 10 ; a++){
    for (let b : number = 1 ; b < 10 ; b++){
        let c = a * b
        if (a<b) continue	//	我在这里剔除多余数	老师的方法在 for 循环中就剔除了
        txt += ` ${b}*${a}=${c}`
        if (a == b)txt += `\n`
    }
}
console.log(txt)

SiKi老师 方法

let s : string = `\n`
for (let hang : number = 1 ; hang < 10 ; hang++){
    for (let lie : number = 1 ; lie <= hang ; lie++){
        s += `${lie}*${hang}=${hang*lie} `
    }
    s += `\n`
}
console.log(s)

while 循环

let x : number = 0
while ( x < 5 ) {
    console.log(x)
    x++
}

上面这段代码和 for 循环代码意思是一样的
但需特别注意最后的自增
因为不搞好就会弄成死循环 (一般情况下避免出现死循环)

函数

function fun1 () {}	//	常规函数创建方式
let fun1 : () => {}	//	变量回调函数
class lei {
    chu1 : string = ''
    hd = ()=>{}	//	类变量回调函数
    constructor () {}	//	类初始化函数
    fun1 () {}	//	类函数
}

类是重点,我之前的文章有写过
点击跳转_查看类

练习

用对象的方式
用类的方式都是可以实现的
但需要自己根据实际情况进行使用

//	创建对象	下面代码并未使用
interface gw {
    name : string
    damage : number
    hp_max : number
    hp : number
}
//	创建类
class guai{
    name : string
    damage : number
    hp_max : number
    hp : number
    constructor (name:string , damage:number , hp_max:number , hp:number){
        this.name = name
        this.damage = damage
        this.hp_max = hp_max
        this.hp = hp
    }
    gongji (dx:guai){
        dx.hp = dx.hp - this.damage
        console.log(`${this.name} 攻击了 ${dx.name} 造成了 ${this.damage} 点伤害\n${dx.name} 当前血量 ${dx.hp}`)
    }
    fanji (dx:guai){
        dx.hp = dx.hp - this.damage/2
        console.log(`${this.name} 反击了 ${dx.name} 造成了 ${this.damage/2} 点伤害\n${dx.name} 当前血量 ${dx.hp}`)
    }
}
//	创建实例类
let bgj = new guai ('白骨精', 15, 100, 100)
let nmw = new guai ('牛魔王', 30, 200, 100)
let hxf = new guai ('虎先锋', 20, 200, 100)
//	函数
function gongji (g1:guai , g2:guai){
    g2.hp = g2.hp - g1.damage
    console.log(`${g1.name} 率先攻击了 ${g2.name} 造成了 ${g1.damage} 点伤害\n${g2.name} 当前血量 ${g2.hp}`)
    g1.hp = g1.hp - g2.damage
    console.log(`${g2.name} 还击了 ${g1.name} 造成了 ${g2.damage/2} 点伤害\n${g1.name} 当前血量 ${g1.hp}`)
}
//	调用函数
gongji (hxf , nmw)
//	调用类函数
nmw.gongji(hxf)
hxf.fanji(nmw)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值