这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
前言
在之前的学习中我们对JavaScript有了一个比较深入的了解,我们清楚的知道了JavaScript是一门狂野的语言,在声明类型时并不需要标注数据类型,这给我们的编码带来了自由发挥的空间,但看不出数据类型导致的潜在问题一直影响着大多数程序员,这为TypeScript的出现埋下伏笔。
JavaScript的类型弊端
当代码体积达到一定程度后,会出现一些很神奇的bug。最经典的一个报错信息是can not find 'xxx' from undefined,当js定义了一个对象时,其可能真的是一个对象,也可能是undefined,再加上js独有的异步代码特性,使得有时候js变量先开始是undefined而在一段时间后才被赋值。另外,由于js的数据类型转换非常随意,对于我们随意声明的变量,编译器也不知道它到底是什么数据类型,这导致了编码过程中没有任何代码补全。这时,明确变量的类型变得至关重要。
TypeScript简介
TypeScript是JavaScript的超集,即任何JavaScript代码可以直接放入TypeScript中。除此之外,TypeScript增加了变量类型标注和自动类型推导,明确的指出了变量类型。
类型标注
const s: string = 'hello world'
TypeScript在变量名后跟:再接数据类型,这样我们就明确的为变量标注了数据类型。但也不是所有变量的类型都需要我们亲自为其标注,TypeScript支持类型自动推导,在编译器或IDE中,我们只需将鼠标移至变量上即可查看自动推导的数据类型。一般来说数据类型都会被准确推导,我们一般重点对需要自定义数据类型的对象进行类型标注。
type关键字
使用type关键字,我们可以定义一个新的数据类型
type dataType = string | number
const num: dataType = 1
const str: dataType = '2'
这里我们定义了一个数据类型dataType,TypeScript支持用&和|进行类型运算。dataType是string和number的聚合类型,它既能接收字符串类型也能接收数字类型。
总结
本次文章我们介绍了typeScript出现的原因,引入了类型推导和type关键字,但TypeScript的强大远远不止这些,在下一次的文章中,我们将继续介绍TypeScript的各种属性。