1、在 uni-app x 的 UTS 语法中：
- 不能直接访问 `any` 类型对象的属性
- 需要将对象转换为 `UTSJSONObject` 类型后使用 `getString()`、`getNumber()` 等方法访问属性
- 数组元素需要明确的类型定义才能在模板中正确访问属性
- 空数组需要明确指定类型，如 `[] as string[]`
- 函数必须在调用前定义（不支持函数提升）
- 访问动态对象属性需要使用 `UTSJSONObject` 的 `getString()`、`getNumber()` 等方法
- 类型导入需要使用 `type` 关键字
-UTS 不允许直接访问 `any` 类型的属性。需要将参数类型改为 `MessageItem`
- UTS 不允许直接访问 `any` 类型参数的属性
- 必须使用明确的类型定义才能访问属性
- 函数必须先定义后使用（包括生命周期钩子调用的函数）
- 不允许直接访问 `any` 类型参数的属性
- `if` 条件必须是 `boolean` 类型，不能是 `Any?`
- `forEach` 箭头函数中不能使用赋值表达式作为函数体
- 函数必须先定义后使用
- `any` 类型不能直接使用点语法访问属性，必须使用索引访问 `obj['property']`
- 访问后需要类型转换 `as number` / `as string`
- `if` 条件必须是 `boolean` 类型
- 函数必须先定义后调用
- `any` 类型不能直接使用点语法访问属性
- 需要转换为 `Record<string, any>` 后使用索引访问 `obj['property']`
- 模板中的 `||` 运算符左边必须是 boolean 类型
- 可空类型使用可选链 `?.` 和空值合并 `??`
- `uni.showModal` 的 `success` 回调不能是 `async` 函数
- 解决方案：创建独立的 async 函数（如 `doCancelOrder`、`doConfirmReceive`、`doApplyRefund`），在回调中调用
- 模板中访问可空类型属性前必须先判空 `v-if="order != null"`
- 使用可选链 `?.` 和空值合并 `??` 处理可空类型
- `uni.showModal` 的 `success` 回调不能是 `async` 函数
- 函数必须在使用前定义
- 不支持 `Record<K, V>` 对象字面量语法
- 模板中可空类型必须使用 `?.` 安全访问
- `uni.showModal` 的 `success` 回调不能是 `async` 函数
- `any` 类型属性访问需转换为 `Record<string, any>` 后用索引访问
- 不支持 `Record<K, V>` 对象字面量语法
- `any` 类型属性访问需转换为 `Record<string, any>` 后用索引访问
- `uni.showModal` 的 `success` 回调不能是 `async` 函数
- 模板中可空类型必须使用 `?.` 安全访问
- 不支持 `Object.values()` 和 `Object.entries()`
- 嵌套的数组方法调用可能导致类型推断失败，应拆分为独立变量
- `any` 类型属性访问需转换为 `Record<string, any>` 后用索引访问
- 不支持 `Record<K, V>` 对象字面量语法
- 不支持 `Object.keys()`、`Object.values()`、`Object.entries()`
- 嵌套的数组方法调用可能导致类型推断失败，应改用 for 循环
- `any` 类型属性访问需转换为 `Record<string, any>` 后用索引访问
- 函数必须在使用前定义
- 对象字面量 `{...}` 只能用于构造类型（class），不能用于接口（interface）
- 需要创建动态对象时，应使用 `new UTSJSONObject()` 然后调用 `.set()` 方法
- 对于 `type` 定义的对象类型，同样需要使用 `UTSJSONObject`
- 对于 `any[]` 或 `reactive` 数组，访问元素属性时需要先转换为 `Record<string, any>` 或 `any[]`
- 使用索引访问属性时，推荐使用方括号语法 `obj['property']` 而非点语法 `obj.property`
- 这是因为 UTS 的类型系统比 TypeScript 更严格，需要在运行时明确类型转换
- `reactive` 对象在 UTS 中不支持索引器赋值操作
- 对于需要整体替换的数组，推荐使用 `ref` 而非 `reactive`
- 使用 `ref` 时，通过 `.value` 进行整体替换可以正确触发响应式更新
- 函数必须在使用前声明（不支持函数提升）
- 访问 `any` 类型对象的属性需要先转换为 `Record<string, any>`
- `ref` 数组元素不能直接整体替换，需要修改元素属性
- 对于可能为 `null` 的参数，需要显式检查后再传递给函数
- 函数必须在使用前声明（不支持函数提升）
- 依赖关系需要明确：被调用的函数必须先定义
- 这与 JavaScript 的函数提升行为不同，UTS 更接近 C/Java 的编译方式
- UTS中箭头函数 `() => {}` 有时会导致"Parenthesized expression cannot be empty"错误
- 解决方案：使用普通函数 `function name(): Type {}` 代替箭头函数
- 变量声明必须有显式类型或初始化值
- 对象属性访问使用 `obj['key']` 而非 `obj.key`
- 数组赋值时类型必须匹配



PS D:\companyproject\mall-trae2> npm run build:app 2>&1
npm error Missing script: "build:app"
npm error
npm error To see a list of scripts, run:
npm error   npm run
npm error A complete log of this run can be found in: C:\Users\Huawei\AppData\Local\npm-cache\_logs\2026-02-24T00_58_23_018Z-debug-0.log