你好
随着近几年前端领域的快速发展,JavaScript 迅速被普及和受广大开发者的喜爱,借助于 JavaScript 本身的强大,也让使用JavaScript开发的人员越来越多,优秀的JavaScript没有缺点吗?其实上由于各种历史因素,JavaScript语言本身存在很多的缺点
缺点:
但是JavaScript正在慢慢变好:
编程开发中我们有一个共识 : 错误出现的越早越好
始于JavaScript,归于JavaScript
TypeScript是一个强大的工具,用于构建大型项目
TypeScript :加强版的 JavaScript
支持
的,并且它紧随ECMAScript的标准,所以ES6、ES7、ES8等新语法标准,它都是支持的增加了类型约束
,而且包括一些语法的扩展
,比如枚举类型(Enum )、元组类型( Tuple)等不需要担心它的兼容性问题
,在编译时也不需要借助于Babel
这样的工具类型检测:
这里会对每个变量进行类型检测,规定是什么类型,再赋值不符合就会报错
// 指定他的数据类型
let num:number = 123
let str:string = 'hahaha'
// 默认情况下。如果可以推导出对应的标识符类型,就不加
let num = 123
let str = 'hahah'
number 数字类型 ( 不区分整形和浮点型 )
boolean 布尔类型
string 字符类型 ( 支持模板字符串 )
array 数组类型
//数组开发中,最好存放的数据类型是固定的
const names : Array<string> = [] //不太推荐,因为可能会和 jsx 语法有冲突
const names : string[] = []
const n:null = null
const n:undefined = unfefined
symbol
any 无法确定类型时使用,最好不要使用,不然意义在哪里?
unknown 只能赋值给 any 类型和 unkown 类型 ; any 类型可以赋值给任意类型
T 泛型 不预先指定具体的类型,而是在使用的时候在指定类型限制的一种特性
never 会提醒开发者类型检查
function handleMessage( message:string | number){
switch (typeof message){
case 'string':
console.log('string 的处理')
break
case 'nubmer':
console.log('nubmer的处理')
break
default:
const check:never = message //当没有对message 类型检查完时会提醒开发者
}
}
const info : [string,number] = ['abc',123] //指定每个元素类型
// Array 数组类型是指定所有的数据类型
// any 有点危险,并没有指定数据类型
// tuple 可以指定数据类型
// T 泛型是在使用是指定数据类型
函数的返回值类型:
// 通常情况下,在定义一个函数时,都会给参数加上类型注解
function sum(num1:number,num2:number):void ( string ){
//当返回值为空时可以设置void
//可以指定返回值类型
}
ps:
// 上下文的函数,一般不加类型注解,会根据上下文环境推导出来 (箭头函数...)
function sum(num1:number,num2?:number):void ( string ){
//表示第二个参数可选择传
}
类型别名:
type unionType= string | number | boolean
//此时 id 的类型就是 string 或者 number 或者 boolean
function print(id:unionType){
}
是真的烦,哎,累死了,
打开飞机喀什地方史蒂夫卡省的放射科大夫了爱对方律师阿道夫啦啦啦的身份卡四点零分拉是否阿斯弗的反馈
使用联合类型值时,需要特别小心 narrow