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

TypeScript中FollowPath类型能否在路径无效时抛出类型错误?

可行,可通过构造带明确错误信息的类型触发类型检查报错

你可以修改FollowPath类型,在路径无效时返回一个包含自定义错误信息的never交叉类型,让TypeScript的类型检查器直接抛出明确的错误提示,替代原逻辑中返回never的隐晦处理:

type FollowPath<T, P> =
    // 路径为空时,返回目标类型T
    P extends [] ? T :
    // 路径首元素是T的合法键,递归深入类型结构
    P extends [infer E extends keyof T, ...infer Ps] ?
        FollowPath<T[E], Ps> :
    // 路径无效时,返回带错误信息的never交叉类型,触发类型报错
        never & { __ERROR__: `Invalid path: ${Extract<P, any[]>[0]} is not a key of ${T}` };

效果说明

当传入无效路径时,比如FollowPath<{ a: { b: number } }, ['c']>,编辑器会直接显示类型错误,提示内容为never & { __ERROR__: "Invalid path: c is not a key of { a: { b: number; }; }" },清晰告知用户哪个键不属于目标类型,比单纯返回never更直观。

这种方式利用了TypeScript对交叉类型的显示规则:虽然never会吞噬其他类型属性,但自定义的__ERROR__字段会被类型检查器识别并展示,从而达到抛出明确类型错误的目的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:35:07