ArkTS 不是强静态类型吗,怎么还会有这种问题?(HarmonyOS 鸿蒙Next)

ArkTS 不是强静态类型吗,怎么还会有这种问题?(HarmonyOS 鸿蒙Next) 如图,有个 KV 存储,存储的时候申明变量值是 string 类型,结果存进来的是 number 类型,没报错,问题一;取值的时候,返回值类型是 string,结果取出来的是 number,也没报错,问题二;getErrorCode 返回的值在实际用的时候确报错了,报错为:Error message:The “string” argument must be one of type string, Buffer, or ArrayBuffer. Received type number,问题三,这是哪门子薛定谔式地静态检查?莫名其妙的导致线上的崩溃,服了。

图片


更多关于ArkTS 不是强静态类型吗,怎么还会有这种问题?(HarmonyOS 鸿蒙Next)的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

按这个代码块看确实很奇怪,我感觉是bug,可以提供一个完整的demo看下吗

更多关于ArkTS 不是强静态类型吗,怎么还会有这种问题?(HarmonyOS 鸿蒙Next)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


ArkTS 是鸿蒙系统中的一种编程语言,它基于 TypeScript,并引入了强静态类型特性。强静态类型语言在编译时会对类型进行检查,以确保变量、函数参数和返回值等符合预期的类型。然而,即便在强静态类型语言中,仍可能出现一些类型相关的问题,原因可能包括:

  • 类型推断问题:在 ArkTS 中,虽然类型推断可以减少显式类型声明的需求,但在某些复杂场景下,类型推断可能无法完全准确地推断出变量的类型,导致潜在的运行时错误。

  • 类型兼容性问题:ArkTS 允许某些类型之间的隐式转换或兼容性处理,这可能导致在编译时无法捕获所有类型不匹配的问题。

  • 第三方库或 API 的类型定义:如果使用的第三方库或 API 的类型定义不完整或不准确,可能导致类型检查无法完全覆盖所有使用场景。

  • 动态类型特性:虽然 ArkTS 是强静态类型语言,但在某些情况下(如与 JavaScript 互操作),可能会引入动态类型的行为,导致类型安全问题。

  • 开发者自定义类型:如果开发者在定义复杂类型时存在逻辑错误或遗漏,可能会导致类型检查无法完全覆盖所有可能的场景。

总结来说,ArkTS 虽然是强静态类型语言,但在实际开发中仍可能因类型推断、兼容性、第三方库、动态类型特性或开发者自定义类型等问题,出现类型相关的异常或错误。

回到顶部