ts基础知识
定义
typescript 为js添加了类型系统,ts是js的超集,ts老大哥,js弟弟 ts>js
node.js让js摆脱了浏览器束缚,可以实现服务端/桌面端编程
微信小程序和微信小游戏都是基于node.js实现的ts定义: Type+JavaScript(为js添加了类型系统)、微软开发的开源编程语言,开发大型应用
优势
js的类型系统存在先天缺陷,绝大部分是类型错误。
优势一:类型化思维方式,开发严谨,提前发现错误,减少改bug时间
优势二:代码可读性好,维护和重构代码更容易
优势三:补充了接口、枚举等开发大型应用时的缺少功能
解析TS的工具包:
node.js只认识js代码,不认识TS代码,需要先将TS代码转换为JS,然后
就可以在node.js/浏览器中运行了
环境
在当前目录打开终端,输入命令tsc hello.ts,会生成一个hello.js文件
在Node.js环境中跑代码 node hello.js
麻烦,简化方式,使用ts-node包 npm i -g ts-node
ts-node hello.ts直接运行ts文件
单行注释 //
多行注释 /* */
输出语句console.log() 在终端中打印信息
知识点
变量使用
1:声明变量并指定类型 2:给变量赋值
let age:number = 1;
变量命名只能出现数字、字母、下划线和美元符号,不能以数字开头
变量区分大小写
变量的命名规范:1、有意义 2、驼峰命名法cityName
基本数据类型 number/string/boolean/undefined/null
对象数据类型
number[] 类型为数字数组
number类型可包括 1 1.0 +1 -1
string类型可包括 “1” ‘1’ “ “
boolean类型可包括 true false
undefined类型的值为:undefined,声明但未赋值
let u:undefined = undefined;
null类型的值为:null,声明了变量并且赋值为null
let n:null = null;
+可用于字符串拼接
2-+’1’ = 2 - 1 = 1
+加字符串会将字符串转换为数值匿名函数
let person = {sayHi:function(){ console.log('大家好,我是一个方法'); }}
对象是无序键值对的集合
属性和方法的区别:值是不是函数
对象的类型注解:接口
TS中对象是结构化的,简单来说就是对象有什么属性或者方法
对象类型注解的语法类似对象自身的语法
1 | //对象类型注解 |
类型推论与类型断言
1 | //TS的类型推论 |
文本内容、样式操纵
1 | //操纵文本内容 dom.innerText = ""; dom必须是详细类型,不能是Element,需要进行类型断言 |
classList属性(类样式):添加、移除、判断存在
p.classList.add(‘b’) b是css样式名
p.classList.remove(‘b’)
let bexists:boolean = p.classList.contains(‘b’)
操作事件
1 | //addEventListener,给dom对象绑定事件 |
函数声明形式的事件处理程序说明
//可以先使用函数,再声明函数,event使用时必须指定类型
btn.addEventListener(‘click’,handclick)
function handclick(event:MouseEvent){
}
使用字面量进行类型声明
使用多个字面量进行声明可以理解为枚举类型,只能在这些数值之间取得
let b:”male”|”female”;
b=”male”; //正确
b=”female”; //正确
b=”1” //编译器会提示报错
any
一个变量类型设置为any相当于对该变量关闭TS的类型检测,使用TS时,不建议使用any类型
声明变量如果不指定类型和赋值,TS解析器会自动判断变量的类型为any(隐式的any)
unknown
unknown表示未知类型的值
unknown和any的区别:unknown类型的变量不能赋值给别的变量,any可以
unknown是一个类型安全的any
1 | let e:unknown; |
void
表示为空,以函数为例,就表示没有返回值的函数
1 | function fn():void{ |
never
表示永远不会返回结果,一般用于抛出异常
1 | function fn2():never{ |
对象
语法:{属性名:属性值,属性名:属性值}
在属性名后边加上?,表示属性是可选的
1 | let b:{name:string,age?:number}; //age可选 |
函数
1 | let d:(a:number,b:number) => number; |
数组与元组
1 | let e:string[]; //字符串数组 |
枚举类型enum
JS中没有,TS新增的
1 | enum Gender{ |
类型别名
1 | type myType = 1|2|3|4|5; |
配置
1 | //编译时监视文件夹下所有ts文件,在同级目录新建配置文件tsconfig.json,里面内容为{},然后执行tsc即可将当前 |
一般很少只用ts编译。大型项目ts结合webpack打包工具编译ts代码
执行 npm init -y指令生成package.json文件,用来存储打包配置
安装webpack打包工具
