从TypeScript迁移到ArkTS的第一个坑——内联对象类型问题描述在TypeScript中可以写{ row: number, col: number }[]但ArkTS中会报编译错误。解决方案class替代需要new实例时exportclassMove{row:number;col:number;constructor(row:number,col:number){this.rowrow;this.colcol;}}interface替代对象字面量时interfaceLevelConfig{level:number;name:string;difficulty:Difficulty;}privatelevels:LevelConfig[][{level:1,name:简单,difficulty:Difficulty.EASY}];number[][]替代坐标对/方向向量constdirections:number[][][[0,1],[1,0],[1,1],[1,-1]];conststars:number[][][[3,3],[7,7],[11,11]];回调默认值onCellClick:(row:number,col:number)void(){};资源目录结构深色和浅色问题entry/src/main/resources/ ├── base/element/color.json ← 默认浅色 └── dark/element/color.json ← 深色覆盖颜色资源base浅色{name:start_window_background,value:#F5F5DC}dark深色{name:start_window_background,value:#333333}系统自动选择——浅色模式读base深色模式优先读dark。引用方式配置文件$color:start_window_background代码中$r(app.color.xxx)改进方向本项目Canvas和页面颜色为硬编码完整深色适配需将颜色移入资源文件。总结ArkTS不支持内联类型用class/interface/number[][]替代。回调函数属性需要提供默认值。
HarmonyOS 小游戏《对战五子棋》第37篇 - 总结踩坑
发布时间:2026/7/12 18:22:04
从TypeScript迁移到ArkTS的第一个坑——内联对象类型问题描述在TypeScript中可以写{ row: number, col: number }[]但ArkTS中会报编译错误。解决方案class替代需要new实例时exportclassMove{row:number;col:number;constructor(row:number,col:number){this.rowrow;this.colcol;}}interface替代对象字面量时interfaceLevelConfig{level:number;name:string;difficulty:Difficulty;}privatelevels:LevelConfig[][{level:1,name:简单,difficulty:Difficulty.EASY}];number[][]替代坐标对/方向向量constdirections:number[][][[0,1],[1,0],[1,1],[1,-1]];conststars:number[][][[3,3],[7,7],[11,11]];回调默认值onCellClick:(row:number,col:number)void(){};资源目录结构深色和浅色问题entry/src/main/resources/ ├── base/element/color.json ← 默认浅色 └── dark/element/color.json ← 深色覆盖颜色资源base浅色{name:start_window_background,value:#F5F5DC}dark深色{name:start_window_background,value:#333333}系统自动选择——浅色模式读base深色模式优先读dark。引用方式配置文件$color:start_window_background代码中$r(app.color.xxx)改进方向本项目Canvas和页面颜色为硬编码完整深色适配需将颜色移入资源文件。总结ArkTS不支持内联类型用class/interface/number[][]替代。回调函数属性需要提供默认值。