分类: js

babel 处理流程管窥

原理babel 处理三步骤:parse 解析、transform 转换、generate 生成。 解析过程基于 @babel/parser 做词法分析、语法分析。词法分析将源程序解析成令牌流;语法分析将令牌流转换成 AST。 转换过程基于 @babel/traverse 遍历 AST,对节点进行添加、更新及移除等操作。此时插件将介入工作。 生成过程基于 @babel/generator 深度遍历

react 工程中使用 ts

常规React.ReactNode:children 类型。React.CSSProperties:样式类型。React.MouseEvent<HTMLElement, MouseEvent> 等:event 对象类型。React.ChangeEventHandler 等:事件处理器。React.Ref:ref 引用类型,通常需要结合 React.useRef(null)。 使用 Om

Reflect, Proxy

ReflectES6 提供的 API,集成语言层面的对象操作(操作与 Proxy 一一对应,且为函数形式)。 Reflect.get(target, name, receiver): 获取属性。 Reflect.set(target, name, value, receiver): 对属性赋值。 Reflect.defineProperty(target, name, desc): 修改属性的描

修饰器

概述修饰器是 es7 中的一个提案,其本质为编译期间执行的一个函数,用于装饰类、方法、属性等,不能用于装饰函数(因为函数存在声明提升)。 使用 decorator(target, property?, desciptor?){} 语句声明修饰器函数,其中,参数 target 为目标函数,property 为属性,desciptor 为属性描述符,后两个参数用于装饰方法或属性的情景下。装饰类,在修饰

typescript文档笔记

基础类型ts 基础类型包含 boolean, number, string, array, tuple 元祖, enum, any 任意类型, void 非任意类型(可赋值为 undefined 或 null,通常用于函数无返回值时), undefined, null, never 永不存在值的类型(通常用于函数报错或陷入死循环时), symbol。 其中,数值类型支持十进制、十六进制、八进制和二

flow使用指南

概述flow 是 facebook 推出的 js 代码类型检查工具。 flow 可借助 babel 编译,添加 babel-preset-flow 即可;babel-preset-react 包含 babel-preset-flow。或者借助安装 flow-bin 启动类型检查,flow-remove-types 移除类型标记。 通过在脚本前添加 // @flow 或 / @flow / 将文件标