You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用TypeScript的infer类型推断让函数返回特定值?

用TypeScript的infer优化函数返回类型

首先修正你代码里的两处语法错误:

  • 接口定义不能用=,正确写法是interface IConfig { ... }
  • 原函数one的返回类型写错了,IConfig['isDebugMode']是函数类型(() => 'prod' | 'development'),不是函数的返回值类型,这会导致类型不匹配报错。

接下来用infer提取目标函数的返回值类型,实现让one返回特定的联合类型:

// 修正后的接口定义
interface IConfig {
  isDebugMode: () => 'prod' | 'development';
}

// 用infer提取函数返回值类型的工具类型
type ExtractReturnType<T> = T extends () => infer R ? R : never;

// 定义函数,指定返回类型为isDebugMode的返回值类型
function one(): ExtractReturnType<IConfig['isDebugMode']> {
  // 由于process.env.mode默认是string类型,需要断言为目标类型
  return process.env.mode as ExtractReturnType<IConfig['isDebugMode']>;
}

说明

  • ExtractReturnType通过条件类型和infer自动提取传入函数类型的返回值:如果T是无参数函数,就推断它的返回值为R,否则返回never。
  • 这样one函数的返回类型就被约束为'prod' | 'development',符合你想要的特定值类型要求。
  • 对process.env.mode做类型断言是因为Node.js的process.env默认所有属性都是string | undefined,需要明确它的类型匹配目标返回值。

内容的提问来源于stack exchange,提问作者codeBox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:34:53