泛型参数转换为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> 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

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

HarmonyOS
2024-05-30 21:56:44
7947浏览
收藏 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> 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

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> 
  } 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
分享
微博
QQ
微信
回复
2024-05-31 21:17:49


相关问题
HarmonyOS 类型判断
946浏览 • 1回复 待解决
HarmonyOS ArkTS问题
902浏览 • 1回复 待解决
HarmonyOS ArkTS的类型判断
880浏览 • 1回复 待解决
HarmonyOS 组件如何添加
1031浏览 • 1回复 待解决
HarmonyOS ArkTS中如何实现构造函数
1506浏览 • 1回复 待解决
HarmonyOS类的属性如何初始化?
1324浏览 • 1回复 待解决
HarmonyOS Length 如何转换为具体数值?
1148浏览 • 1回复 待解决
HarmonyOS timestamp转换为正常时间戳
722浏览 • 1回复 待解决
如何在ArkTS中定义和使用?
1806浏览 • 1回复 待解决
HarmonyOS Object怎么转换成map
733浏览 • 1回复 待解决
求告知HAR如何转换为HSP
1121浏览 • 1回复 待解决
ReactNative项目如何转换为HarmonyOS框架
3445浏览 • 0回复 待解决
HarmonyOS 构造方法在ets中的实现
846浏览 • 1回复 待解决
HarmonyOS ArkTS支持子组件接受T吗
905浏览 • 1回复 待解决
HarmonyOS 如何将视频转换为GIF
807浏览 • 1回复 待解决
HarmonyOS 请问如何把map转换为jsonstring
540浏览 • 1回复 待解决