在TypeScript中,我有一个函数可以接受带有约束的通用参数:
函数f1 <U扩展字符串>(param:U):U { return param; } const a1 = f1('hello'); // a1的类型是'hello'-太好了!
现在,我正在尝试使其成为可能,因此您可以选择添加其他类型作为返回类型的一部分。但是,这样做时,必须提供U类型的默认参数。这样一来,TypeScript就可以停止推断U的值,并使用我提供的默认类型:
函数f2 <T =从不,U扩展string = string>(param:U):U | T { return param; } const b1 = f2('hello'); // b1的类型是'hello'-太好了! const b2 = f2 <boolean>('hello'); // b2的类型是字符串| 布尔值-糟糕:我希望类型为“ hello” | 布尔值。 const b3 = f2 <布尔值,'hello'>('hello'); // b3的类型为'hello'| 布尔值-较差:类型正确,但API是多余的。
所以我的问题是,有没有办法让TypeScript不断从参数推断类型?我不想为U提供默认类型,我一直希望TypeScript推断该值。伪代码显示了我想要的完整API:
函数f3 <T =永不,U扩展字符串=推断>(参数:U):U | T { return param; } const c1 = f3('hello'); // c1的类型是'hello'-太好了! const c2 = f3 <boolean>('hello'); // c2的类型为'hello'| 布尔值-太好了!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句