如何设计既安全又易用的泛型接口,并避免无意义的泛型参数?
简答题中等836 次浏览
参考答案与解析
核心结论:泛型的价值是描述多个位置之间可复用的类型关系,而不是把具体类型替换成一个看起来更抽象的字母。一个良好的泛型参数应至少参与两个有意义的位置,例如连接输入与输出、对象与键、容器与元素;如果类型参数只出现一次、调用者可以任意指定且实现无法验证,它通常应改为普通参数类型、联合类型或直接使用 unknown。
底层机制上,泛型函数在调用点会通过实参、上下文返回类型和默认类型参数进行推断。约束 extends 用于限定可接受类型的上界,并使实现体能够安全访问约束中声明的能力。keyof 与索引访问类型可表达对象和属性键之间的关系:键必须属于对象,返回值则随具体键变化。泛型默认值用于降低常见调用的书写成本,但默认值仍必须满
