TypeScript中显式指定部分泛型参数后,返回条件类型不符合参数值预期的问题求助
TypeScript中显式指定部分泛型参数后,返回条件类型不符合参数值预期的问题求助
大家好,我遇到了一个TypeScript泛型相关的问题,想请教一下各位:我希望函数的返回类型是基于参数值的条件类型,但当显式指定部分泛型参数后,返回类型的推断结果和预期不符。
以下是最小复现代码:
type R<K extends string> = K extends "test"? "is test!" : "is not test..."; function D<T, K extends string = string>(v: K): R<K> { // Type T会用于其他逻辑,这里的类型转换只是示例用 return v as unknown as R<K>; } const x = D("test"); // x的类型是"is test!",符合预期 const y = D<string>("test"); // y的类型变成了"is not test...",不符合预期
我困惑的点在于:明明传入的参数是"test",但显式指定T为string后,返回类型就不再根据参数值正确推断了,有没有办法解决这个问题,让我既能显式指定部分泛型参数,又能让返回类型根据实际传入的参数值正确生成呢?
备注:内容来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

