TypeScript 概念
TypeScript是JavaScript的超级,对JavaScript做类型检测增强处理,避免JavaScript隐式类型的转换的问题,比如 []==''
注意:隐式类型转换的规则是当 == 操作符两侧的值不满足恒等时(===),则先将空数组转换为字符串类型,然后再进行恒等比较。
TypeScript不会影响JavaScript的内部结构和代码执行,TypeScript是JavaScript的铠甲,JavaScript能更安全的编码,减少因为类型判断错误引发的代码bug。TypeScript是一门中间语言,最终它还需要转译为纯JavaScript,再交给各种终端解释、执行。
TypeScript 特性
-
完善的类型系统,对变量赋值,函数传参,数据类型检测和定义做了很好的处理工作。
-
广泛的普适性,兼容Js,适用市面上主流框架 VUE,Angular ,React。
-
基于Ts的类型检测,前期开发工作可以避免很多变量类型上的错误。
静态类型/动态类型
怎么区分一门语言是静态类型还是动态类型,类型检测的时机 ,编译阶段还是执行阶段
类型系统按照类型检测的时机分为:静态类型和动态类型
动态类型语言 没有编译阶段,可以直接执行
JavaScript是解释型语言,没有编译阶段,意味着程序是可以直接运行的,所以JavaScript是动态类型语言。
动态类型语言,程序只有在执行的时候才会检测到错误,举例子,变量赋值number 却使用数组的API,编译阶段不会报错,程序执行阶段会报错。
TypeScript是静态类型语言,同样上面的例子,程序在编译阶段就会报错
区别是静态类型语言在编译阶段会进行类型检测,动态类型之间执行程序
弱类型/强类型
区分强弱类型是否允许隐式类型转换,比如不同类型的计算 number + string
强类型会报错,比如python语言
弱类型不会JavaScript, 会根据类型做隐式转换后再处理计算
基础类型
区分原始类型和非原始类型
原始类型 string number boolean bigint symbol undefined
伪原始类型null在JavaScript中null是一个对象,且所有结构化类型都是通过null的原型链派生出来的
非原始类型 Object
原始类型指的是非对象且没有方法的数据类型