一、邂逅TypeScript
TS的编译环境
注意:默认情况下,所有的ts文件都是在同一个作用域下编写的,如果想把每一个ts文件当做一个单独的作用域的时候,可以使用export {},这样这个文件就是一个单独的作用域,当然,这只是其中的一种方式
npm install typescript -g
安装typescript之后自动就安装了tsc。
然后就可以通过tsc typescript.ts命令 把typescript.ts转成js代码
ts的运行环境
方式二:通过ts-node库,为ts的运行提供环境
安装好之后就可以通过ts-node typescript.ts 命令在node环境中运行ts文件了
二、ts的语法
变量的声明
三、数据类型
1、number
2、boolean
3、string
4、array
在ts中,数组中存放的数据类型最好是固定的,在一个数组中存放不同的数据类型是不好的习惯
5、object
实际开发中,不建议这样写 const obj:object = {name:‘哈哈’,age:19}。因为这样不能获取数据也不能设置数据。可以直接写const obj = {name:‘哈哈’,age:19}
6、null和undefined
7、symbol
8、any
any类型表示可以是任意类型
在不想给某些javascript添加具体的数据类型时,可以使用any类型
还有一种情况,当创建了一个数组,刚开始不知道里边应该存放什么样的数据类型的时候,可以这样:(不推荐,因为数组中尽量存放确定的数据类型)
9、unknown
unknown类型的变量只可以赋值给any类型和unknown类型;
any类型的变量能赋值给任意数据类型的变量
10、viod
11、never
12、tuple (元组类型)
元组一般用在函数的返回值最多
13、函数的参数类型
14、函数的返回值类型
15、匿名函数的参数类型
16、对象类型
17、可选类型
18、联合类型
上边这张图中的print()和print(null)hi报错,但是不是编译器报的错
19、类型别名
20、类型断言
类型断言用到的最多的场景是:把相对来说比较宽泛的类型转成比较具体一点的类型,这样就可以调用具体类型的特殊的属性或者特殊的方法
把一个字符串类型的变量赋值给number类型的变量肯定会报错,但是可以通过as,用as先把message转成any或者unknown再转成number(实际开发中不推荐这样做,因为会造成类型的混乱)
21、非空类型断言
22、可选链
23、?? 和 !!
??和!! 这两个操作符不是ts特有的,js也有这两个操作符。??和三元运算符差不多
24、字面量类型
字面量类型必须和它的值保持一致
字面量推理
25、类型缩小
26、函数类型
上边这个修改的地方,按照原来的返回void也是不会报错的,因为返回void意味着返回任何类型都可以,但是严格来说应该返回number
27、参数的可选类型
注意:可选类型的参数必须写在后边
28、默认参数
注意:一般参数的顺序都是必传参数放在最前边,接着是有默认值的参数,最后写可选参数
29、剩余参数
24、this
25、函数的重载
函数的重载:就是函数的名称相同,参数不同(参数的个数不同或者参数的类型不同)的几个函数
在函数的重载中,有实现体的函数不能直接调用