Today I Learnt

发表于更新于阅读时长 2 分钟

惊了

2020.01.10 Opaque type 是只导出类型名称而不导出类型的具体实现和构造器, 可以防止外部依赖该类型的具体实现

2020.01.19 row polymorphism 和 strucal subtyping 的主要区别是前者总是会得到具体类型而不会得到父类型, 因此没有类型信息的损失

2020.01.21 react-hook-form 使用了 ref 回调, 设计非常精妙, 但是没做到类型安全

2020.01.25 JS 中, (+Infinity).toLocaleString()可以得到"∞"

2020.01.31 Anuglar AOT 模式下会对 metadata 部分做部分求值, 因为需要在编译期得知可以使用的指令

2020.02.01 Angular 中的 injector 层级最末端是 root(AppModule 创建)->platform injector(PlatformModule 提供, 可以在多个 App 之间共享)->null injector(见到 optional 就返回 null, 否则报错)

2020.02.02 Angular 中的 viewProvider 为该组件 view(模板) 内的组件提供依赖

2020.02.02 Angular 中的 Host 装饰器的作用是向上寻找依赖仅限到模板边界, 即是显式声明的父组件或是当前 view(模板)

2020.02.24 flexbox 的 start edge 不仅由 flex-direction 决定, 还与 write mode 有关

2020.03.28 onionify(@cycle/state) 相对于普通的 RxJS 的好处是可以传递 T 或者 T => T(就像 React 里的 setState 那样)

2020.05.26 React 中一种常见的性能优化方式是把 Provider 的直接子组件用 memo 或保持引用不变(这是 sCU 以外另一种避免重渲染的方式)包裹, 以免 context 更新时的不必要渲染

2020.05.31 http header 的合法值是9 | 32-255, 因此 uint8 数值不一定是合法的 header, 合法的 header 也不一定能用 utf-8 编码

2020.06.20 Existential Type 和 Universal Type 相反, 指的是被调用者可以往这里放入任何类型, 在普通语言里可以用控制反转实现

2020.06.27 Rescript 生成 option 时如果知道内容不是undefined可以把Some('a)生成'a, None生成undefined

2020.06.28 因为 Linux 的 pthread 缺乏 suspend, 所以 gc 语言在 STW 时可能因为某一个线程死循环而阻塞全部线程. JVM 在函数调用和循环跳转前插入 safepoint 检查来避免, go 则使用 signal

© 2016 - 2022Austaras Devas