TypeScript| 青训营笔记

150 阅读2分钟

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