请判断解决上述问题的以下代码片段.
declare const calc: (expr: string, options?: any) => any;
type StrOrNum = string | number;
type CalcWrapReturnType = StrOrNum | ((expr: StrOrNum) => StrOrNum) | null
function calc_wrap<T extends unknown>(expr_or_data: T, data?: any): CalcWrapReturnType {
const _fill_data: any[] = [];
const options = { _error: "_" };
if(typeof expr_or_data === 'string') {
return calc( expr_or_data, {
_fill_data,
...options
} ) as StrOrNum;
}
return typeof expr_or_data === 'string' ? ( expr: StrOrNum ): StrOrNum => calc( expr as string, _fill_data ) : null;
}
我的实现简单地忽略了T的类型是否为数字.也许您可以将数字转换为字符串,并在需要时使用它.