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

TypeScript如何为泛型指定精确字段?限定联合类型函数入参

解决方案

可以直接使用TypeScript内置的Extract工具类型,从联合类型中精准提取符合条件的分支类型,无需手动拆分原联合类型:

type Some = {field: 'add'} | {field:'remove'};

// 提取Some中field为'add'的类型分支
function add(value: Extract<Some, { field: 'add' }>) {}
// 提取Some中field为'remove'的类型分支
function remove(value: Extract<Some, { field: 'remove' }>) {}

验证效果

add({ field: 'add' }); // ✅ 类型校验通过
add({ field: 'remove' }); // ❌ 类型报错,不符合参数要求
remove({ field: 'remove' }); // ✅ 类型校验通过
remove({ field: 'add' }); // ❌ 类型报错,不符合参数要求

Extract<T, U>的作用是从类型T中筛选出所有可以赋值给U的成员类型,刚好适配你从Zod infer得到联合类型、不想拆分原类型的场景,直接通过字段条件就能锁定函数允许接收的参数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:22:33