Files
medical-mall/pages/mall/consumer/doc/uts.txt

87 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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` 函数
- 函数必须在使用前定义
- Promise.all 需要显式指定类型参数,如 Promise.all<any>([...])
- CSS 伪类选择器 :nth-child() 不支持,需要移除
- 如果函数 A 调用了函数 B则函数 B 必须在函数 A 之前定义(不仅是调用顺序,而是定义顺序)
- 不支持 Record<K, V> 对象字面量语法,需要改用 if-else 或 Map
- Promise.all 在某些情况下类型推断失败,可以改用顺序执行 await
- onLoad 的 options 参数是 any 类型,需要转换为 UTSJSONObject 后使用 getString() 方法访问属性
- decodeURIComponent 返回 String? 类型,需要检查 null 后再赋值
- 条件判断必须使用布尔类型,字符串要用 `!= ''` 代替 truthy 判断
- 数组元素类型要明确,不要用 any[],否则模板中无法访问元素属性
- 可空数组类型调用方法需要使用 `!` 非空断言,如 `arr!.join(',')`
- v-model 绑定的变量需要明确类型,如 `quantity: 1 as number`
- 不支持 `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