TypeScript初试(一)

跟egret引擎一样,学习typescript也是因为公司的需求。虽然typescript算是JavaScript的超集,按理说应该跟js很像,但是个人感觉ts真的跟java更像一下。遇到有搞不懂的问题都是像公司后端及android童鞋们求助解决的,在这里先谢啦~
当然有一些像interface接口这种的,我的项目中没有用到,而且我问了几次也不是很理解,感觉不用这个也可以操作。
废话不多说了,下面就说一下我通过这个项目总结的一些经验:

start

ts跟js相比,语法上严禁了一些。js动态语言的特性当然也就没了,书写的时候一般都要跟上类型,如:
let isProto: boolean = false;
后面就不会对这种东东再进行赘述。
这里的 : boolean 就是对变量 isProto 类型的说明,每一种语言都会有相应的基本类型,这些网上都有很多,
例如:TypeScript Handbook等,当时学习的时候就是从网上找的这种的一点一点看的。基本的语法在这里就简单一点带过。

布尔值 boolean

最基本的数据类型就是简单的true/false,这个就是布尔类型(boolean)
let isProto: boolean = false;

数字类型 number

ts中的number跟js一样也是浮点数,这个跟java什么的不太一样,没有int或者float整形或浮点型,只有一个number数字类型。这里有一点需要注意,如果想要通过二进制传输的话,js跟ts的number类型最多只支持15位数字,数字位数变多就会不精确。例如我的项目中,前后端数据传输就采用的protobuf这种二进制格式,在定义userID的时候用的long,并且是18位,结果在传输过来时发现末尾不是0的出现了些问题,变得跟原来不一样了。后来查阅各种资料才发现了这个问题,然后就将这种较长的数字也改为string类型替代了。

let i: number = 0;
let colorRed = 0xff0000;
字符串 string

在ts中,string类型跟js中的一样,就不在多说了
let name: string = 'zhangshuang';
TypeScript Handbook中还介绍了模板字符串的用法,如果有需要也可以参考一下。当然我的项目中没有用到这个。

数组

TypeScript中,数组有两种表示方法:
1.元素类型后跟上[ ]
let numList: number[] = [1,2,3];
2.数组泛型
let numList: Array<number> = [1,2,3];

枚举 enum

最初我理解枚举的时候是将enum分成e+num,本质上还是数字,官方的解释就是将一系列数字赋予友好的名字,它的用法也很强大:

enum fontColor = {
    gameRed = 0xff0099, //游戏中的红色
    gameBlue = 0x0099ff //游戏中的蓝色
}
let red: number = fontColor.gameRed;


enum errorMsg = {
    "网络连接故障,请耐心等待" = 5000,
    "账号在其他位置登录,如不是本人请更改密码" = 5001
}
let eMsg: string = errorMsg[5000];

可以说是结合了对象的.跟数组的[number]的用法于一身,具体怎么使用要看自己。比如第一种的fontColor,颜色数值0xff0099比较难记,如果使用fontColor.gameRed就可以解决这个问题;第二种errorMsg,错误提示较长,就可采用errorMsg[5000]来解决。

任意值 any

ts中的任意值就是为了解决在编程时不清楚变量的类型而定义的一种类型,这个就相当于js的隐式类型转换。

let notSure: any = 4;
notSure = '改变了类型';
空值 void

我理解这个void是通过函数来理解的。有的函数有返回值,有的没有,为了代码清晰严谨,有返回值的函数就写返回值的类型,没有返回值的函数直接写void

//有返回值,类型为string
function getName(name: string): string {
    return name;
}

//没有返回值
function alert(): void {
    alert(1);
}
其他的类型

还有一些类型如元组Tuple,Never等因为在项目中没有用到,所以在这里也没再多说,如果有兴趣可以去TypeScript Handbook中寻找一下。

下次分享一下变量声明var、let、const

发表评论

邮箱地址不会被公开。 必填项已用*标注