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

如何定义TypeScript类型以强制选择器符合命名与类型规则?

问题:类Redux Store组合框架createBundle函数的参数类型约束实现

我正在开发一款类Redux的Store组合框架,需要为框架中的createBundle(对应示例中的Init)函数实现参数类型约束,确保开发者传入的参数符合以下模式:

  • 参数包含name字符串字段与selectors对象字段;
  • selectors对象的每个键必须遵循select${Capitalize<string>}的命名规则;
  • selectors对象的每个值必须为Selector类型(定义为<S>(state: S) => unknown)。

需要让类型系统能够检测以下四种场景:

  • CASE 1:键名不符合规则且值类型错误;
  • CASE 2:键名符合规则但值类型错误;
  • CASE 3:键名不符合规则但值类型正确;
  • CASE 4:键名与值类型均符合规则(合法场景)。

我尝试了两种BundleSelectors类型定义,但均无法满足需求:

版本1:

type BundleSelectors<T> = { [I in keyof T]: Selector }

版本2:

type BundleSelectors = Record<`select${string}`, Selector>

现寻求正确的BundleSelectors类型定义,以实现上述全部约束与错误检测能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:04:53