consumerm模块完成度90%,完善消费者和商家端数据库表,商品、聊天、订单数据对接好了supabase,和商家端对接了聊天功能,安卓端编译通过了css样式,剩余几个页面在处理函数规范问题
This commit is contained in:
76
pages/mall/consumer/doc/uts.txt
Normal file
76
pages/mall/consumer/doc/uts.txt
Normal file
@@ -0,0 +1,76 @@
|
||||
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
|
||||
Reference in New Issue
Block a user