定义一个类型AnyFn,代表任意的函数:

  export type AnyFn = (...args: any[]) => any; let a: AnyFn;a = (data) => console.log(data);a('Jerry');a = 1; // 语法错误

上面代码将1赋给a,会引起编译错误,因为1的类型是number.

定义一个MemoizedProjection类型:

export type MemoizedProjection = {memoized: AnyFn;reset: () => void;setResult: (result?: any) => void;clearResult: () => void;
};

定义一个变量,类型为MemoizedProjection:


let a: MemoizedProjection;let b = (data) => console.log(data);a.memoized = b;
a.reset = () => console.log('reset');
a.setResult = (result) => console.log(result);
a.clearResult = () => console.log('clear');

上述代码执行会报错误:

Uncaught TypeError: Cannot set property ‘memoized’ of undefined:

下图29行,尖括号里的T不能换成any. any不能出现在类型参数的位置里。如果表示任意类型,不出现在类型参数的位置,可以用any.

Generic type ‘MemoizedSelector<State, Result, ProjectorFn>’ requires between 2 and 3 type arguments.

interface里添加method:

看个Spartacus的例子:一个函数除了本身的实现之外,还多了4个属性,分别指向4个另外的函数:

memoizedProjector构造完毕:

通过下面这个方法构造的:

Object.assign. 该方法会把输入参数的各个对象的属性做一个合并:

更多Jerry的原创文章,尽在:“汪子熙”:

Ngrx Store实现源代码的MemoizedSelector学习笔记相关推荐

  1. 从源代码开始 Detectron2学习笔记

    `从零开始 Detectron2学习笔记(一) 框架简介 1.Detection2的安装 2. 用预训练模型进行检测 2.1官方demo示例 2. 2源代码解读 2.2.1 模型的配置和构建 2.2. ...

  2. 树莓派学习笔记—— 源代码方式安装opencv

    0.前言 本文介绍如何在树莓派中通过编译源代码的方式安装opencv,并通过一个简单的例子说明如何使用opencv. 更多内容请参考--[树莓派学习笔记--索引博文] 1.下载若干依赖项 在开始安装之 ...

  3. java存入光盘_java 这是 学习笔记(jdk7)书中的光盘里的源码,不知大家需要不,里面都是新手 的好 Develop 238万源代码下载- www.pudn.com...

    文件名称: java下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1272 KB 上传时间: 2013-04-01 下载次数: 18 提 供 者: 孙鹏启 详细 ...

  4. eos 源代码学习笔记一

    文章目录 eos 源代码学习笔记 1.eos 中的常见合约类型 2.语言环境局部( locale )变量的使用简介(目的是通过 gettext 软件包 来实现软件的全球化) 3.eos 源代码的一些优 ...

  5. 【OS学习笔记】二十五 保护模式七:任务和特权级保护对应的汇编源代码

    本汇编代码是以下两篇文章讲解的内容的内核代码; [OS学习笔记]二十三 保护模式七:保护模式下任务的隔离与任务的特权级概念 [OS学习笔记]二十四 保护模式七:调用门与依从的代码段----特权级保护 ...

  6. CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码

    CTFHUB http协议题目 学习笔记 详细步骤 请求方式 302跳转 cookie 基础认证 响应源代码 WEB-HTTP协议 1-请求方式 2-302跳转 3.cookie 4.基础认证 5.响 ...

  7. PCA(主成分分析-principal components analysis)学习笔记以及源代码实战讲解

    PCA(主成分分析-principal components analysis)学习笔记以及源代码实战讲解 文章目录 PCA(主成分分析-principal components analysis)学 ...

  8. 韩顺平php可爱屋源码_韩顺平_php从入门到精通_视频教程_第20讲_仿sohu主页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理...

    韩顺平_php从入门到精通_视频教程_第20讲_仿sohu首页面布局_可爱屋首页面_学习笔记_源代码图解_PPT文档整理 对sohu页面的分析 注释很重要 经验:写一点,测试一点,这是一个很好的方法. ...

  9. Buffalo 学习笔记- buffalo.js 源代码注释(一)

    Buffalo 学习笔记- buffalo.js 源代码注释(一) 注: 如果转载 请注明 原文地址: http://blog.csdn.net/jianglike18/archive/2009/04 ...

最新文章

  1. wfs.js 多路视频 串屏 闪烁
  2. 好记心不如烂笔头之jQuery学习,第一章
  3. ZooKeeper編程01--RMI服務的多服務器管理
  4. zookeeper完全分布搭建-安装-配置
  5. 中央音乐学院计算机研究生,2020北京中央音乐学院硕士研究生招生复试电子音乐作曲、电子音乐技术理论等考生须知...
  6. (39)System Verilog程序Program设计实例
  7. Android: android 如何预置APK
  8. ZOJ 3502 Contest 状态压缩 概率 DP
  9. win10自带抓包工具_win10应用商店抓包-Win10商店抓包工具下载 v1.1免费版--pc6下载站...
  10. php ora01017,建立DBLINK报ORA-01017,ORA-02063
  11. Disunity_V0.5.0 提取Unity生成的Apk的资源
  12. 谈谈ILDasm的功能限制与解除
  13. 【软件工程】结构图(SC)——期末复习用
  14. Sql server2005 char/varchar/text和nchar/nvarchar/ntest的区别
  15. 开发一个app需要多少钱?
  16. 计算机网络安全中的审计,什么是网络安全审计
  17. 盘点市场营销工作中的5个办公神器
  18. Greenplum在HTAP场景下的优化和应用
  19. 痛心:三天痛别八位院士!中科院院士、著名药学家蒋华良英年早逝,终年57岁...
  20. golang ODBC 访问access数据库

热门文章

  1. sql 语言中 when case 用法
  2. Android的配置界面PreferenceActivity
  3. 知乎:GAN 的发展对于研究通用人工智能有什么意义?
  4. 20189222 《网络攻防实践》 第四周作业
  5. 微信开发同步微信服务器图片到本地,逻辑处理。
  6. Hadoop生态系统介绍
  7. linux网络配置相关命令
  8. 【Android】自定义环形菜单View
  9. PetShop 中的字符串过滤
  10. 让Windows Live Messenger支持多账户登录