泛型参数转换为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 ArkTS中如何实现构造函数
416浏览 • 1回复 待解决
如何在ArkTS中定义和使用?
162浏览 • 1回复 待解决
求告知HAR如何转换为HSP
336浏览 • 1回复 待解决
ReactNative项目如何转换为HarmonyOS框架
1856浏览 • 0回复 待解决
HarmonyOS类的属性如何初始化?
392浏览 • 1回复 待解决
如何将字符串转换为浮点数。
337浏览 • 1回复 待解决
如何将app.media.app_icon,转换为PixelMap
1825浏览 • 1回复 待解决
如何将时间戳转换为日期格式的时间
2921浏览 • 1回复 待解决
HarmonyOS 如何将base64数据转换为图片
431浏览 • 1回复 待解决
HarmonyOS 使用DES解密,转换 smkey失败
399浏览 • 1回复 待解决
HarmonyOS SM2密钥对转换失败
491浏览 • 1回复 待解决