Typescript
泛型
泛型约束
conditional type 可以作为泛型参数,来对参数类型做约束,这里也需要对之前的理解做一些修改。
conditional type 中的 extends 之前理解为可分配,不应该理解为 R extends T,R 是 T的 子类型
应该理解为 R 是一个至少满足了 T 类型的形状类型,应该是 T 是 R的子类型。
也就是 extends 左侧 必须拥有右侧的基本类型(对象,或函数,或数组之类的),且满足右侧的内部基本需要(一定有右侧的属性,函数参数要得更少,但返回不少),之后还可以有更多不会覆盖右侧的无关的类型内容。
对象的话就是 左侧是一个对象,且具有右侧所有的属性,且还能拥有更多
函数的话就是: 左侧是一个函数,且具有右侧从左往右的部分参数,或全部参数,但返回的类型范围大于或等于右侧的范围
type T = (a: string) => '1';
type R = (a: string, b: number) => string;
extends 左侧如何满足右侧?右侧的基本要求要满足,只要不改变右侧性质,其他随意。
React
context
应该作为一些特定组件的共有属性容器