泛型参数转换为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 类型判断
260浏览 • 1回复 待解决
HarmonyOS ArkTS问题
254浏览 • 1回复 待解决
HarmonyOS 组件如何添加
258浏览 • 1回复 待解决
如何在ArkTS中定义和使用?
627浏览 • 1回复 待解决
HarmonyOS ArkTS中如何实现构造函数
720浏览 • 1回复 待解决
HarmonyOS 构造方法在ets中的实现
208浏览 • 1回复 待解决
HarmonyOS ArkTS支持子组件接受T吗
227浏览 • 1回复 待解决
HarmonyOS类的属性如何初始化?
612浏览 • 1回复 待解决
HarmonyOS Length 如何转换为具体数值?
400浏览 • 1回复 待解决
HarmonyOS timestamp转换为正常时间戳
174浏览 • 1回复 待解决
HarmonyOS Object怎么转换成map
145浏览 • 1回复 待解决
HarmonyOS 如何将视频转换为GIF
133浏览 • 1回复 待解决
求告知HAR如何转换为HSP
566浏览 • 1回复 待解决
ReactNative项目如何转换为HarmonyOS框架
2321浏览 • 0回复 待解决