
TypeScript学习
最近面试时hr问我会不会ts,说会js的都会ts,我之前学到一般搞python去了,这次是回来补坑的...
『静态类型检查』
· 在代码运行前进行检查,发现代码的错误或不合理之处,减小运行时异常的出现的几率,此种检查叫『静态类
型检查』,TypeScript和核心就是『静态类型检查』,简言之就是把运行时的错误前置。
· 同样的功能,TypeScript的代码量要大于JavaScript,但由于TypeScript的代码结构更加清晰,在后期代码
的维护中TypeScript 却远胜于JavaScript。
tsc-ts编译器
安装命令
npm i typescript -g
编译文件命令tsc(.ts可以不用)
tsc index/tsc index.ts
注意:现在安装最新的 TSC 编译器并不会新增全局命令,需要写成 npx tsc index 才可以!
我就不全局安装了,怕以后版本冲突
npm install typescript --save-dev
npx tsc index.ts
tsc --init//初始化
自动化测试//编译时只使用 tsc 命令会读取 tsconfig 配置,如果加了文件名就会读取默认配置 变var
npx tsc --watch index.ts/npx tsc --watch(监视所有ts文件)
"noEmitOnError": true,//在tsconfig.json上,编译错误时不要转为js
◆ JavaScript 中的数据类型
1 string
2 number
3 boolean
4 null
5 undefined
6 bigint
7 symbol
8 object
备注:其中 object 包含:Array、Function、Date 、Error 等
· TypeScript 中的数据类型
1. 上述所有JavaScript类型
2. 六个新类型:
1 any
2 unknown
3 never
4 void
5 tuple
6 enum
3.两个用于自定义类型的方式:
1 type
2 interface
any是协变,unkown是非协变
断言不是类型转换!!!只是标注类型
never不是限制变量的而是限制函数的
void后续不能用(例如用于if(内)),而undefined可以
Object只要是能调用Object方法的都能存,例如(toString)
Array<string>
前端箭头函数省略写法(一句)默认将那句的执行结果作为返回值
2.会把你写在ts里的import在转成js的时候变成require
3.然后浏览器只认识import,不认识require,所以就报错了
4.你在ts配置文件把"module"设置为"es6",问题就解决了
接口会和同名的类进行合并,这种机制被称为声明合并。
ts类和类的原型对象区别:
进一步解释
原型链:每个实例都有一个内部指针(__proto__),指向其构造函数的原型对象。当访问实例的属性或方法时,JavaScript 引擎会首先在实例本身查找,如果找不到则沿着原型链向上查找。
继承:子类可以继承父类的原型对象中的方法和属性,进一步扩展或重写这些方法。
vue双向绑定原理
是vue2的双向绑定原理,vue3则是使用es6里的proxy
defineProperty将属性绑定到原型对象上,赋值时,this调用set指向实例对象,本质就是原型对象上面绑定了带有this的函数