1.TypeScript是什么?
TypeScript(简称:TS)是JavaScript的超集(JS有的TS都有)
TypeScript=Type+JavaScrip(在JS基础之上,为JS添加了类型支持)
TypeScript是微软开发的开源编程语言,可以在任何运行JavaScript的地方运行
2,TypeScript为什么要为JS添加类型支持?
背景:JS的类型系统存在“先天缺陷”,JS代码中绝大部分错误都是类型错误(Uncaught TypeError)
问题:增加了找Bug,改Bug的事件,严重影响开发效率
从编程语言的动静来区分,TypeScript属于静态类型的编程语言,js属于动态类型的编程语言
静态类型:编译期做类型检查;动态类型:执行期做类型检查
代码编译和代码执行顺序:1.编译2.执行
对于js来说:需要等到代码真正去执行的时候才能发现错误(晚)
对于TS来说:在代码编译的时候(代码执行前)就可以发现错误(早)。
并且,配合VSCode等开发工具,TS可以提前到在编写代码的同时就发现代码中的错误,减少找Bug,改Bug时间。
3,TypeScript相比Js的优势
1.更早(写代码的同时)发现错误,减少找Bug,改Bug时间,提升开发效率
2.程序中任何位置的代码都有代码提示,随时随地的安全感,增强了开发体验
3.强大的类型系统提升了代码的可维护性,使得重构代码更加容易
4.支持最新的ECMAScript语法,优先体验最新的语法,让你走在前端技术的最前沿。
5.TS类型推断机制,不需要再代码中的每个地方都显示标注类型,让你在享受优势的同时,尽量降低了成本。
除此之外,Vue3源码使用TS重写,Angular默认支持TS,React与TS完美配合,TypeScript已成为大中型前端项目的首选编程语言。
4,安装编译TS的工具包
问题:为什么要安装编译TS的工具包?
回答:Node.js/浏览器,只认识JS代码,不认识TS代码。需要先将TS代码转化为JS代码,然后才能运行。
安装命令: npm i -g typescript
typescript包:用来编译TS代码的包,
提供了tsc命令,实现了TS——》JS的转化
验证是否安装成功:tsc -v(查看typescript的版本)
实行步骤:
1.终端打开 输入安装命令 npm i -g typescript
2.输入tsc -v
结果如下:
5.编译并运行TS代码
1.创建hello.ts文件(注意:TS文件的后缀名为.ts)
2.将TS编译为JS:在终端中输入命令,tsc hello.ts(此时,在同级目录中会出现一个同名的JS文件)
3.执行JS代码:在终端中输入命令,node hello.js
说明:所有合法的JS代码都是TS代码,有JS基础只需要学习TS的类型即可
注意:由TS编译生成的JS文件,代码中就没有类型信息了
6.简化运行TS的步骤
1.问题阐述:每次修改代码后,都要重复执行两个命令,才能运行TS代码,太繁琐
简化方式:使用ts-node包,直接在Node.js中执行TS代码
安装命令:npm i -g ts-node(ts-node包提供了ts-node命令)
使用方式:ts-node hello.ts
解释:ts-node命令在内部偷偷的将TS-》JS,然后,再运行JS代码
实践一下:
打开没关闭的终端:
结果出现报错:
原因:证书过期
解决办法:关闭SSL检查
npm config set strict-ssl false // 关闭ssl检查
再来一遍:
成功!
建立一个02hello.ts文件并在终端运行
ts-node 文件名
7.TypeScript常用类型
概述:
TypeScript是JS的超集,TS提供了JS的所有功能,并且额外的增加了:类型系统
所有的JS代码都是TS代码
JS有类型(比如,number/string等),但是JS不会检查变量的类型是否发生变化,而TS会检查
TypeScript类型系统的主要优势:可以显示标记出代码中的意外行为,从而降低了发生错误的可能性
1.类型注解
2.常用基础类型
建立03-ts代码意外行为演示.ts文件
报错原因是不能将已经申明的number类型的变量赋值为其它类型
8.类型注解
示例代码:
let age:number=18
说明:代码中的:number就是类型注解
作用:为变量添加类型约束。比如,上述代码中,约定变量age的类型为number(数值类型)
解释:约定了什么类型,就只能给变量赋值该类型的值,否则,就会报错
创建04-ts-node.ts文件
9.常用基础类型概述
可以将TS中的常用基础类型细分为两类:1.JS已有类型 2.TS新增类型
1.JS已有类型
原始类型:number/string/boolean/null/undefined/symbol
对象类型:object(包括,数组,对象,函数等对象)
2.TS新增类型
联合类型,自定义类型(类型别名),接口,元组,字面量类型,枚举,void,any等
10.原始类型
1.原始类型:number/string/boolean/null,undefined/symbol
特点:简单。这些类型,完全按照JS中类型的名称来书写
let age:number=18
let myName:string='刘老师'
let isLoading:boolean=false
创建05-原始类型.ts文件
11,数组类型
2.对象类型:object(包括,数组,对象,函数等对象)
特点:对象类型,在TS中更加细化,每个具体的对象都有自己的类型语法
数组类型的两种写法:(推荐使用number写法)
let numbers:number[]=[1,3,5]
let strings:Array<string>=['a','b','c']
需求:数组中既有number类型,又有string类型,这个数组的类型应该如何写?
let arr:(number | string) []=[1,'a',3,'b']
解释:|(竖线)在TS中叫做联合类型(由两个或多个其他类型组成的类型,表示可以是这些类型中的任意一种)
注意:这是TS中联合类型的语法,只有一根竖线,不要与JS中的或(||)混淆了
新建文件06-数组类型.ts
联合类型
创建文件07-联合类型ts