avaScript 的基本知识****
Atwood 定律:stack overflow 的创立者之一的 jeff Atwood 提出:任何可以使用 JavaScript 来实现的应用都最终会使用 JavaScript 实现。
1. web端:JavaScript
2. 移动端:reactNative、weex、uniapp 等框架实现跨平台开发
3. 小程序端:离不开 JavaScript
4. 桌面端:借助 electron 来开发
5. 服务器端:借助 node 环境使用 JavaScript 开发
痛点:ES5 之前使用的 var 关键字关于作用域的问题、最初 JavaScript 设计的数组类型并不是连续的内存空间、至今(2021-10-10)也没有加入类型检测这一机制。
错误越早发现越好:开发 → 测试 → 上线
类型思维的缺失:前端人员通常不会对参数类型有思考,也不关心参数的类型,当需要确定类型时,则需要添加很多的逻辑判断。
2014年,Facebook 推出了 flow 来对 JavaScript 进行类型检测,同年微软推出了 typescript1.0 来进行检测。如今大部分都使用 typescript 来进行类型检测,并且 vue3.x 已经使用了 typescript 进行了重构。
基本知识****
定义:
GitHub:TypeScript is a superest of javscript that compiles to clean javascript output.
Typescript:TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
翻译:TypeScript 是拥有类型的 JavaScript 超集,它可以编译成普通、干净、完整的 JavaScript 代码。
理解:支持 JavaScript 所拥有的特性,紧紧跟进 ES 的标准、增加了类型约束,包括一些语法的扩展,比如枚举类型和元组类型等、ts 最终会编译成 js 代码,编译时也不用借助 babel 等工具。
众多的项目使用 ts:angular 源码、vue3 源码、vscode 编辑器、react 的 ant-design 的 ui 库、小程序也支持 ts 开发。
类型的查找****
.d.ts文件,它是用来做类型的声明(declare),它仅仅用来做类型检测。
ts查找类型的位置:
1. 内置类型声明:ts自带的
2. 外部定义类型声明:可以去GitHub上安装对应的类型声明文件。可以使用该网站进行相关类型的查询
http
复制代码
www.typescriptlang.org/dt/search?s…
3. 自己定义类型:编写.d.ts文件即可
typescript
复制代码
// 声明模块
declare module "lodash" {
function join(arg: any[]): void
}
// 声明变量、函数、类
declare let harName: string
declare let harAge: number
declare function harFoo(): void
declare class Person {
name: string
age: number
constructor(name: string, age: number)
}
// 声明文件
declare module "*.jpg"
// 声明命名空间
declare namespace $ {
export function aaa(settings: any): any