Typescript

泛型类型传递并缩小(narrowing)泛型参数范围

如果是基于类的可以采用继承

  1. class FooNumber extends Foo<number> {}

不是基于类的,只可使用

  1. function id<T>(x: T) {
  2. return x;
  3. }
  4. const idNum = id as { (x: number): number };

Programming

封装的意义

真正的封装是,经过深入的思考,做出良好的抽象,给出“完整且最小”的接口,并使得内部细节可以对外透明(注意:对外透明的意思是外部调用者可以顺利的得到自己想要的任何功能,完全意识不到内部细节的存在;而不是外部调用者为了完成某个功能、却被碍手碍脚的private声明弄得火冒三丈;最终只能通过怪异、复杂甚至奇葩的机制,才能更改他必须关注的细节——而且这种访问往往被实现的如此复杂,以至于稍不注意就会酿成大祸)。

作者:invalid s
链接:https://www.zhihu.com/question/20275578/answer/26577791