泛型参数转换为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
按赞同
/
按时间
savage01

加上判空之后编译正常

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
相关问题
如何将app.media.app_icon,转换为PixelMap
743浏览 • 1回复 待解决
如何将时间戳转换为日期格式的时间
1210浏览 • 1回复 待解决
关系数据库RdbStore执行sql语句失败
599浏览 • 1回复 待解决
获取运行时编译构建参数
519浏览 • 1回复 待解决
macOS 编译 Paddle-Lite 失败
438浏览 • 1回复 待解决
hi3861编译失败的原因
9702浏览 • 2回复 待解决
缺失getcontext函数导致breakpad编译失败
509浏览 • 1回复 待解决
OpenHarmony-2.2-Beta2 编译失败,求助
7383浏览 • 1回复 已解决
编译OpenHarmony2.0失败,求助一下
7585浏览 • 3回复 已解决
编译hispark, pegasus, hi3861, wifi 代码失败
6741浏览 • 1回复 待解决
Object标准库接口限制
495浏览 • 1回复 待解决
Router传递Object对象解读
741浏览 • 1回复 待解决