TypeScript 学习笔记
数据类型
在 JavaScript 当中是没有数据类型的,应该说是在声明变量的时候不需要声明数据类型,所以就会有问题,而且有很多问题是在编写代码的时候不能被发现,因为是动态类型,所以即使是代码编辑器也没办法对代码有正确的提示,只有在编译时才会报错,而 TypeScript 就是为了解决 JavaScript 的这些小问题而出现的,所以就先来讲一下 TypeScript 的写法
JavaScript
1 | var num; |
TypeScript
1 | var num:number; |
可以看见,TypeScript 和 JavaScript 的区别就是 type ,也就是说 TypeScript 是有类型的 JavaScript,在声明变量时就要规定它的类型
1 | var num:number; // number 类型 |
其中 any 和 void 通常用在函数的返回类型当中
函数
函数跟 JavaScript 大体上也是一样的,不过要标明返回的数据类型,其实也可以不用,但这样的话不就又失去了 type 的作用了吗
1 | function func1():void { |
在入参的后面也需要跟上数据类型,这样在调用时就不会出现任何参数都能塞进去的情况了
1 | const sum = (x:number,y:number):number => { |
比如说像这样

接口
有时候需要用到入参是一个对象的时候可以这样写
1 | const getInfo = (obj:{name:string,age:number}):string => { |
但有些时候这样写就显得有些复杂了,这时候可以给入参加入一些约束,就需要用到接口
1 | // 接口 用来约束对象中的参数 |
可选属性
可是有些时候,有些参数并不是必须的,就可以设置成可选属性,只需要在类型前加上一个 ?
1 | interface Info{ |
断言
有些时候我们还有可能会输入了一些多余的属性,比如不存在的属性,在传参的时候就会出现一些小问题
1 | var info:string = getInfo({ |

这时候就需要用到断言来让函数接受
1 | var info:string = getInfo({ |
索引签名
当然,还有更好的解决方法,把多余的参数也接收了
1 | interface Info{ |
先到这里,之后学到新的像声明枚举,泛型,命名空间啥的,到时候再补充