TypeScript泛型推断出现未使用变量错误,如何正确解决?
解决TypeScript类型推断中未使用变量的TS6133错误
你给出的代码:
type Penultimate<T extends any[]> = T extends [ ...infer Init, infer Result, infer Last, ] ? Result : never; export type { Penultimate };
触发了以下错误:
error TS6133: 'Init' is declared but its value is never read.
error TS6133: 'Last' is declared but its value is never read.
不建议直接用// @ts-ignore忽略错误,更规范的解决方式是用下划线_命名未使用的推断变量,TypeScript允许用下划线表示“故意忽略的变量”,不会触发未使用变量的报错。
修改后的代码:
type Penultimate<T extends any[]> = T extends [ ...infer _, infer Result, infer _, ] ? Result : never; export type { Penultimate };
如果需要区分不同的忽略变量,也可以用_Init、_Last这类命名,同样不会触发错误:
type Penultimate<T extends any[]> = T extends [ ...infer _Init, infer Result, infer _Last, ] ? Result : never; export type { Penultimate };
这种方式比// @ts-ignore更合理,因为@ts-ignore会屏蔽该行所有错误,可能掩盖其他潜在问题;而用下划线命名明确传达了“这些变量是故意不使用的”意图,既解决了报错,又保持了代码的语义清晰。
内容的提问来源于stack exchange,提问作者Dima Kambalin
相关产品推荐
相关产品推荐

