如何无需中间函数变量定义包含所有typeof返回值的TypeScript类型?
实现方案
方案1:最稳妥的硬写联合类型
ECMAScript规范明确规定了typeof运算符所有可能的返回值只有固定8种,该集合已经多年没有更新,维护成本极低,同时可读性是所有方案中最高的:
type TypeofResult = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
该类型和你通过辅助函数得到的T0完全等价。
方案2:无需硬写也无需中间变量的推导写法
如果你不想手动枚举所有返回值,也可以通过类型层面的匿名函数类型配合ReturnType实现,全程不需要定义任何辅助函数或变量:
type TypeofResult = ReturnType<(value: any) => typeof value>
这里的(value: any) => typeof value是仅在类型层面生效的匿名函数类型定义,ReturnType会直接提取它的返回值类型,最终得到的结果和你原实现的T0完全一致。
内容的提问来源于stack exchange,提问作者Velocirooster
相关产品推荐
相关产品推荐

