我有一个非常简单的函数示例。它接受可选的泛型类型和可选的第二个参数,如果提供了第二个参数,它将返回泛型类型。
const helper = async <T = void>(
config: { body: string},
applyDataCallback?: (value: string) => T,
): Promise<T | string> => {
const body = typeof (applyDataCallback) === 'function'
? applyDataCallback(config.body)
: config.body;
return body;
}
当我使用它时,即使提供了泛型,我也总是将值设置为Promise<string| number>;
这里的一切都是合乎逻辑的,但我希望这个函数以下面的方式工作:如果提供了applyDataCallback参数OR泛型,则我希望我值仅为泛型。在屏幕截图的情况下,我已经提供了通用的,和applyDataCallback,但仍然有可能在这里字符串。
有什么办法处理这种情况吗?
1条答案
按热度按时间kiz8lqtg1#
解决方案是为applyDataCallback添加默认函数,默认情况下将值类型转换为提供的泛型。
然后总是调用这个回调。