Typescript 的类型收窄

今天学习了一个新姿势 ! 基本需求是这样的: 要判断一个对象是否含有某个属性, 如果有的话, 调用那个属性进行操作, 在 ts 中, 我们对某个对象进行类型注解, 调用该对象属性时候就会进行类型检查, 如果属性不存在的话就会报错, 为了优雅的解决报错的问题, 就有了底下这个姿势: 1234567891011121...

React学习-受控组件和非受控组件

React 受控组件与非受控组件(木偶组件和智能组件)在大多数情况下,我们推荐使用(木偶组件) 受控组件 来实现表单。 受控组件(木偶组件): 表单数据由 React 组件处理 非受控组件(智能组件): 表单数据由 DOM 处理 非受控组件12345678910111213141516171819202122...

Map Set WeakMap WeakSet

SetSet 是 ES6 新增的有序列表集合, 他不会包含重复项. Set 支持 : add(item) 方法,用来向 Set 添加任意类型的元素,如果已经添加过则自动忽略 has(item) 方法用来检测 Set 中是否存在指定元素 delete(item) 方法用来从 Set 中删除指定元素 clear()...

RxJS 学习-(4)-处理高阶流

处理高阶流(high order observable) 所谓高阶流就是指一个 observable 送出的元素还是一个 observable, 像是二维矩阵一样,通常我们需要的元素是第二层的 observable 送出的元素, 所以我们希望可以把二维的 observable 变成一维的 switch在新的 ob...

RxJS 学习-(3)-错误处理

catch在 RxJS 中的 catch 能够回传一个 observable 来送出新的值 直接看🌰: 当错误发生后就会 catch 并重新处理一个新的 observable 我们可以利用这个新的 observable 来送出我们想送的值 1234567891011const source = Rx.obser...

RxJS 学习-(2)-基本的 operators (二)

scanscan 其实是 Observable 版本的 reduce 1234567891011121314const source = Rx.Observable.from('hello') .zip(Rx.Observable.interval(600), (x, y) => x)const ex...

RxJS 学习-(1)-基本的 operators (一)

Operators (一)take(n) 取前n个元素 first() first 会取 observable 送出的第一个元素之后就结束,相当于take(1) takeUntil( observable ) 在某件事情发生时,让一个 observable 直接发出完成信息,例: 12345678var sour...

RxJS学习-(0)-从入门到入门

RxJS 入门要知道的基础知识 RxJS 是一个由 Observable sequences 來组合非同步行为和事件基础程序的库 RxJS 提供了一套完整的非同步解决方案,让我们在面对各种非同步操作时,不管是 Event, AJAX, 还是Animation 等,都可以使用相同的 API 进行操作 這也被称为...

浏览器缓存

Last-Modified浏览器第一次请求,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpResponse Header):此文件在服务器端最后被修改的时间,格式:Last-Modified:Tue, 24 Feb 2017 08:01:04 GMT ...

前端模块化

为了更好的管理网页的业务逻辑,产生了模块化编程的理念。 常用的 JavaScript 的模块化规范有 CommonJS 、 AMD 、CMD CommonJS 规范 服务器端的 Node.js 遵循 CommonJS 规范 CommonJS定义的模块分为:模块引用(require) 模块定义(exports)...