TS入门
记录常用的
系统学习可参考:菜鸟教程
1、语法规范:
以换行分割语句,
可省略末尾分号,同一行需要使用分号来分隔
2.打印log
console.log("Hello World!")//白色,一般提示
console.warn("Hello World!")//黄色,警告
console.error("Hello World!")//红色,报错
3、注释
//单行注释/*** 多行注释* */
4、对象object,类class,方法function
面向对象和面向过程
ts文件基本包含
//className类名
class className {
//方法,函数main() {//调用函数this.functionA()}functionA() {//变量let a = 1;console.log(a);}
}
5、基础类型
any 任意类型
number 数字,包含小数,整数
string 字符串
boolean,
array,
enum
void.
object 对象{a:1}
数组,对象,字符串详解
6、创建变量,方法,类
变量命名规范
const
//const 创建常数,创建以后不可改变
//也可以用来创建object,可改变里面内容
const b = 1;
const obj = { a: 1, b: 2 }
obj.a = 2;
//输出 obj
"obj = { a: 2, b: 2 }"
obj = null;
//输出 obj,失败,会报错
let
//类型为小数,整数,二进制等用number
let a2_1: number = 1.1;
let a2_2: number = 1;
//类型为字符串用string
let a3_1: string = "a";
let a3_2: string = 'a';
let a3_3: string = `a`;//推荐这种写法
let a3_4: string = `a${a2_1}`;//可和表达式混写,结果为 `a1.1`
//类型为true,false用boolean
let a4_1: boolean = true;
//定义数组
let a5_1: number[] = [1, 2, 3]
//定义对象,自定义类型
type test_obj = {name: string,id: number
}
let a6_1: test_obj = null
let a6_2: test_obj = { name: "aaa", id: 666 }
//以上所有类型都可以用any,写any则编辑器不校验类型,为了规范不建议用
let a7_1: any = 1;
a7_1 = "";//类型为any不报错
//不写类型会按第一个赋值的内容推断类型
let a8_1 = 1;
a8_1 = "";//类型推断number,编辑器会报错//类和函数
class classNameTest {//无返回值用voidfunctionA(): void {}//返回number类型,可用类型同上方functionB(): number {return 1}
}//含有多种类型
let a9_1: number | string = 1
a9_1 = "aaa"//不会报错//问号以及默认值使用
function functionC(a: string, b?) { }
function functionD(a: string, b = 1) { }
functionC("111")//类型后标记问号,可不传
functionC("111")//类型后有默认值,可不传
7、运算符+,-,*,/,%,++,–,+=,-=,!,||,&&
+,-,*,/,%
加 减 乘 除
%求余
5%2=1
结果为5除以2的余数
++,–,+=,-=
自增,自减
a++ 等于 a=a+1
// a++和++1a=1;b=a++b=a;a++b=1;a=2a=1;b=++aa=a+1;b=aa=2;b=2;a+=1
a=a+1,也可以简写成a++
! 非,&&且 ||或
&& 运算符只有在左右两个表达式都为 true 时才返回 true。
|| 运算符只要其中一个表达式为 true ,则返回 true。
//!表示非,返回true,false
let a4_2: boolean = !1;//返回false
let a4_3: boolean = !!1;//返回true
8、条件语句
if…else
if(A){}
else if(B){}
else{}//只有if判断可省略{}
if(a==1)a=2;
判断字段为空
//判断字段不为空
if(a){
funA()
}else{
funB()
}
a为0,"",null,undefined会走funB
a为[],{},NAN会走funA//cocos creator里,判断字段不为undefined,null可用
if (cc.isValid(test))
//cocos creator里,判断字段不为undefined,null且不为NAN可用
if (cc.isValid(test) && !isNaN(test))let test_number = parseInt("aaa")
//把非数字字符串转换可能出现类型为NAN的情况,需要额外用isNaN判断判断[]为空
let arr=[]
if(!arr.length)
注意:
arr==[]返回的是false,不能借此判断判断{}为空对象
let obj={}
if(Object.keys(obj).length == 0);
注意:
obj=={}返回的是false,不能借此判断
简写判断 Test ? expr1 : expr2
let b=1
let a = b==1 ? 1 : 2
//等同于
let a;
if(b==1){
a=1
}
else{
a=2
}
switch…case
let i = 1
switch (i) {case 1://i==1时走这里break;//跳出switch语句case 2://i==2时走这里case 3://i==2或i==3时都会走这里break;default://其余情况break;
}
9、循环
for循环,遍历数组,或字符串每个元素
continue,break,return使用
//遍历数组,字符串每个元素
let array = [1, 2, 3, 4]
for (let i = 0; i < array.length; i++) {const element = array[i];if (element == 1) {continue;//继续下一个循环}if (element > 3) {break;//跳出当前for循环}if (element == 2) {return;//不走下面分代码,直接结束当前方法}
}let str="hello"
for (let i = 0; i < str.length; i++) {const element = str[i];console.log(element)
}
//依次输出 h e l l o//倒序遍历
for (let i = array.length - 1; i >= 0; i--)//遍历数组//forEach会把所有元素遍历一遍,不会中途停止array.forEach(element => {if (element == 1) return//转到下一层遍历//continue无效});
for in循环,遍历数组或对象
//遍历数组或对象
let obj = { a: 1, b: 2 }
for (const key in obj) {if (Object.prototype.hasOwnProperty.call(obj, key)) {const element = obj[key];//类似for,可以用break,continue,return}
}
// while 循环
// while 语句在给定条件为 true 时,重复执行语句或语句组。循环主体执行之前会先测试条件。
let a = 1
while (1) {//一直执行a++if (a == 10) return//直到此处返回,递归会用到
}
10、函数
class testClass {a = 1;fun() {//箭头函数let fun2 = () => {// 执行代码console.log(this.a)//输出1,this默认指向当前类}}
}
cocos creator基础知识