相同的类型定义,在 ArkTS 文件里无法使用,会进行报错。?

当在 .ets 文件中定义类型如下:

type demo3 = { a: string }

会提示报错:Object literals cannot be used as type declarations (arkts-no-obj-literals-as-types) <ArkTSCheck\>

而先定义 interface demo1 = { a: string } 再定义 type demo2 = demo1 就没有问题,这个应该是 IDE 检查问题。

Typescript 是支持使用 Type 类型定义,类型定义还要定义自己的类型定义,这个有问题。

阅读 1.6k
1 个回答

当前规范请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/typescript-to-arkts-migration-guide-0000001820879565

对象字面量不能用于类型声明规则:arkts-no-obj-literals-as-types

级别:错误

ArkTS不支持使用对象字面量声明类型,可以使用类或者接口声明类型。

TypeScript

let o: {x: number, y: number} = {
  x: 2,
  y: 3
}

type S = Set<{x: number, y: number}>
ArkTS

class O {
  x: number = 0
  y: number = 0
}

let o: O = {x: 2, y: 3};


type S = Set<O>

相关约束

对象字面量必须对应某些显式声明的类或接口

数组字面量必须仅包含可推断类型的元素

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进