typescript
* Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。
*
* TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持,它由 Microsoft 开发,代码开源于 GitHub 上。
它的第一个版本发布于 2012 年 10 月,经历了多次更新后,现在已成为前端社区中不可忽视的力量,
* 不仅在 Microsoft 内部得到广泛运用,而且 Google 的 Angular2 也使用了 TypeScript 作为开发语言。
* 并且我们熟知的vue,在3.0也即将会使用typescript
*
* javascript是解释型(动态)语言,可以说是从上到下执行,在我们开发过程中,比如有语法错误等等,
* 需要执行到这一行代码才能知道,而typescript则像写易语言那样生成exe时,需要静态编译,而静态编译这个过程,
* 会把代码都检查一遍,看是否通过检测,最终才生成exe,typescript最终是也是编译成javascript原生代码的,
* 只是在这个生成过程中,会进行各种检测,来检查代码是否符合语法啊规则啊,符合的话最终再编译成javascript,
* 规范了我们代码的编写,同时也提高了代码的复用以及组件化
*
* typescript支持es5/es6的语法,并且扩展了javascript语法,更像java、c#、这种语言了
*
* Java、c#这类语言,
* 非常严谨,类型检查等非常严谨,而javascript呢,
* 一般是靠我们用肉眼去排查,很麻烦,typescript就是解决这一类问题的。
*
*
* 一.typescript 安装
* yarn global add typescript
* 全局安装完成后,我们新建一个hello.ts的ts文件
* 命令行输入tsc hello.ts来编译这个ts文件,然后会在同级目录生成一个编译好了的hello.js文件
*
*
* 二、数据类型
* java、c#是强类型语言,而js是弱类型语言,强弱类语言有什么区别呢?
* typescript最大的优点就是类型检查,可以帮你检查你定义的类型和赋值的类型。
*
* 在ts中,定义isFlag为true,为布尔类型boolean
在变量名后加冒号和类型,如 :boolean
* let isFlag:boolean = true
重新赋值到字符串类型会报错
isFlag = "hello swr"
* 定义基本类型都是这样定义 数字类型number 字符串类型string null undefined类型
*
* 但是定义数组的时候有所不同
*
* let pets:string[] = ["旺财","小黑"]; 只能往里面写字符串,写别的类型会报错 let pets:Array<string> = ["旺财","小黑"];
* let arr:Array<string|number|boolean> = ["hello swr",28]; let arr:Array<any> = ["hello swr",28,true]
*
*
* 什么是元组类型?其实元组是数组的一种。
*
* let person:[string,number] = ['邵威儒',28]
* 有点类似解构赋值,但是又不完全是解构赋值,比如元组类型必须一一对应上,多了少了或者类型不对都会报错。
*
* 枚举类型enum
* 我们可以定义一些值,定义完了后可以直接拿来用了,用的时候也不会赋错值。
* 比如我们实际项目中,特别是商城类,订单会存在很多状态流转,那么非常适合用枚举
*
* enum orderStatus {
WAIT_FOR_PAY = "待支付",
UNDELIVERED = "完成支付,待发货",
DELIVERED = "已发货",
COMPLETED = "已确认收货"
}
* 如果我们直接写对象的键值对方式,是可以在外部修改这个值的,而我们通过enum则不能修改定义好的值了,更加严谨
*
*
* 任意类型 any
*
* any有好处也有坏处,特别是前端,很多时候写类型的时候,几乎分不清楚类型,任意去写,写起来很爽,
* 但是对于后续的重构、迭代等是非常不友好的,会暴露出很多问题,某种程度来说,any类型就是放弃了类型检查了。。。
*
* void是不能有任何值
* function say():void {
}
never永远不会有返回值
*
* function loop():never {
while(true){
console.log("陷入死循环")
}
}
loop()
*
*