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
相关产品推荐
相关产品推荐

