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

TypeScript泛型参数报错'?' expected 原因排查求助

TypeScript泛型参数报错:'?' expected 解决方法

错误原因

你在函数参数的类型标注中错误地重复了泛型约束语法。函数Input的泛型声明<T, K extends keyof T>已经限定了K是keyof T的子类型,在引用InputProps时无需再次写K extends keyof T,TypeScript会将这个写法误认为是未完成的条件类型(条件类型要求格式为A extends B ? C : D),因此抛出'?' expected错误。

修正后的代码

type InputProps<T, K extends keyof T> = {
    value: T[K]
}

function Input <T, K extends keyof T>({ value } : InputProps<T, K>) : void {
    console.log(value);
}

说明

  • 泛型约束只需要在泛型声明处定义一次,后续引用该泛型类型时直接传递已约束好的参数即可。
  • 修正后,InputProps<T, K>会正确接收函数泛型中已约束的T和K,类型推导正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:32:52