TypeScript报TS1005: '?' expected错误是什么原因导致的?
错误原因
你代码第2行定义resolve方法的返回值时,使用了不完整的条件类型语法:any extends SCResolvable 属于条件类型的前半段判断逻辑,TypeScript 中条件类型的完整语法是 类型A extends 类型B ? 条件成立时的类型 : 条件不成立时的类型,必须包含?和两个分支的返回类型定义,所以编译器检测到你写了extends做条件判断后,会预期后续出现?,就抛出了TS1005: '?' expected的报错。
解决方案
根据你的实际需求选对应修改方式:
- 如果你只是想声明
resolve方法返回SCResolvable类型,直接修改返回类型声明即可:resolve(scope: any): SCResolvable; - 如果你确实需要通过条件类型动态匹配返回值类型,需要补全条件类型的完整结构,同时搭配泛型使用:
// 示例:入参如果是SCResolvable类型返回any,否则返回SCResolvable,可根据你的实际需求调整两个分支的类型 resolve<T>(scope: T): T extends SCResolvable ? any : SCResolvable;
内容的提问来源于stack exchange,提问作者BlockyPenguin
相关产品推荐
相关产品推荐

