官方文档
推荐√
:微软(最新):https://www.typescriptlang.org/
国内(相比落后几个版本):https://www.tslang.cn/
为什么要学习️
为了好工作,国内很多公司都在使用ts了,会ts有优势
这门语言带了更好的开发体验,提高开发效率
解决js中的难以解决的问题
节省在开发中排错的大部分时间,尤其是大型项目中
js语言的问题
- 片段一
function getName() {
if (Math.random() < 0.5) {
return "yuan jin"
}
return 404
}
let myname = getUsername()
mynema = myname.split(" ")
.filter(it => it)
.map(it => it[0].touppercase() + it.subStr(1))
.join(" ")
片段二
// 这只是示例,我们开发过程中,变量的值一般是接口获取的数据或在一大段代码里混着,极易发生错误 const obj = undefined console.log(obj.name)
- 可以看到我们创建的
ts文件
,直接把各种问题都暴露出来了,包括使用不存在的变量, 函数,或成员
,把一个确定的类型当作一个确定的类型处理
,使用值为null, 或undefined的成员去当成对象等其他去使用
, 当然还有其他比如变量的类型不确定性,赋值不同的类型的值
,全局变量的重复定义
- 比如我们在测试环境写了一大段代码,当时测试时没发现写错了,结果上线却发现有问题,这是非常可怕的。所以
ts
很好的发现了99%人工不没发现的小问题。
js的原罪
- js语言的当时是只用了
两周
赶出来的语言,为了在浏览器实现小的效果. 所以js语言本身的特性,决定了该语言无法适应大型的项目 - 是属于弱类型语言: 变量可以随时更换类型
- 解释性: 错误的发生在
运行时
运行后才能知道错误在哪。 而java
等其他语言是编译型
,编译时就会发现错误
Ts语言的特点️
- TypeScript是JS的超集(
还是用js语言去编写,内容包括js, e5, es6...,只是在此基础上增加了扩展,比如类型系统
),是一个可选的(ts文件中,可以加类型检查,也可以不加,ts会自动推算出当前的变量的类型
),静态(编写代码的时候类型检查,不是在运行时
)的类型系统 - 对代码中的所有标识符(变量, 函数,参数, 返回值)进行类型检查
不需要
对之前的js文件破坏性的改造,学习曲线平滑,只需要将文件后缀改成ts
,就会自动加上错误检查
- 浏览器环境,node环境无法直接识别ts代码,需要使用
tsc命令-ts编译器转化为es
- ts不参与运行,打包后的类型检查,
只在编译-编写代码时
Ts的常识
2012年由微软发布,由anders主导开发。目的为了解决js编写的痛点,提高开发效率
开源, 拥抱ES标准,包含最新ES
额外的惊喜
因为js
没有类型检查,所以在js
中很多面向对象的场景实现起来有诸多问题, TS
可以编写完善的面向对象代码
有了类型检查, 潜移默化的增强了我们的面向对象的开发的思想!!!