TypeScript泛型identity函数赋值给myIdentity的逻辑是什么
TypeScript 泛型函数赋值逻辑说明
你给出的代码里的赋值操作本质是同结构泛型函数类型的兼容赋值,核心逻辑可以拆解为3点:
- 首先你定义的
identity本身就是泛型函数,它的隐式类型签名是<Type>(arg: Type) => Type:表示该函数调用时才会接收具体的类型参数,入参和返回值类型都和这个参数绑定。 - 你给
myIdentity显式标注的类型<Input>(arg: Input) => Input,和identity的类型完全等价:泛型参数名Type和Input只是占位符,只要泛型参数数量、约束、入参/返回值的类型关联逻辑一致,两者就是同一种类型。 - TypeScript的类型兼容规则允许结构完全匹配的泛型函数直接赋值,这个检查只在编译阶段执行。
补充运行时逻辑:编译后所有TS类型标注都会被擦除,运行时
myIdentity就是直接指向identity的函数引用,没有任何额外逻辑,两者调用效果完全一致。
内容的提问来源于stack exchange,提问作者aryan singh
相关产品推荐
相关产品推荐

