泛型参数转换为Object编译失败-鸿蒙开发者社区-51CTO.COM

泛型参数转换为Object编译失败

对一个未知类型的对象根据其类型不同将其转换为object对象,当未知类型对象本身就是object时无法直接将自己返回。

export function convertObj<T>(obj: T): object { 
  if (typeof obj === 'string') { 
    return JSON.parse(obj) 
  } else if (typeof obj === 'object') { 
    return obj 
    // return obj as object 
    // return obj as unknown as object 
    // return obj as Record<string, string> 
  } else { 
    return {} as Record<string, string> 
  } 
}

第二个else if语句块编译报错,无论使用其中注释的任何方案都无法编译通过。

HarmonyOS
2024-05-30 21:56:44
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
薯条包装盒

加上判空之后编译正常

export function convertObj<T>(obj: T): object { 
  if (typeof obj === 'string') { 
    return JSON.parse(obj) 
  } else if (obj && typeof obj === 'object') { 
    return obj 
    // return obj as object 
    // return obj as unknown as object 
    // return obj as Record<string, string> 
  } else { 
    return {} as Record<string, string> 
  } 
}

ArkTS严格模式下,泛型T 和 object 转换可能会发生错误,建议返回值改为 object|T 或者Object。

export function convertObj<T>(obj: T): object { 
  if (typeof obj === 'string') { 
    return JSON.parse(obj) 
  } else if (obj && typeof obj === 'object') { 
    return obj as Object 
  } else { 
    return {} as Record<string, string> 
  } 
}
分享
微博
QQ
微信
回复
2024-05-31 21:17:49
相关问题
HarmonyOS 类型判断
599浏览 • 1回复 待解决
HarmonyOS ArkTS问题
547浏览 • 1回复 待解决
HarmonyOS 组件如何添加
674浏览 • 1回复 待解决
HarmonyOS ArkTS的类型判断
438浏览 • 1回复 待解决
HarmonyOS ArkTS中如何实现构造函数
1059浏览 • 1回复 待解决
如何在ArkTS中定义和使用?
1200浏览 • 1回复 待解决
HarmonyOS timestamp转换为正常时间戳
414浏览 • 1回复 待解决
HarmonyOS Length 如何转换为具体数值?
768浏览 • 1回复 待解决
HarmonyOS类的属性如何初始化?
951浏览 • 1回复 待解决
HarmonyOS ArkTS支持子组件接受T吗
470浏览 • 1回复 待解决
HarmonyOS 构造方法在ets中的实现
546浏览 • 1回复 待解决
ReactNative项目如何转换为HarmonyOS框架
2841浏览 • 0回复 待解决
求告知HAR如何转换为HSP
809浏览 • 1回复 待解决
HarmonyOS Object怎么转换成map
384浏览 • 1回复 待解决
HarmonyOS 如何将视频转换为GIF
468浏览 • 1回复 待解决
HarmonyOS 怎么将日期转换为星期几
737浏览 • 1回复 待解决