uni-app uts 能否增加 type自定义类型 和UTSJSONObject 可以互相转换
uni-app uts 能否增加 type自定义类型 和UTSJSONObject 可以互相转换
uts 能否增加 type自定义类型 和UTSJSONObject 可以互相转换!或者现在uts 中有 type自定义类型 和UTSJSONObject 互相转换的方法吗?
type User = {
name:string,
age:number
}
let jsonObj = {
name:“张三”,
age:12
}
// UTSJSONObject => 自定义type
let userA = JSON.parse<User>(jsonObj.toJSONString())
console.log(userA!.name)
// 自定义type => UTSJSONObject
let utsJsonA = JSON.parseObject(JSON.stringify(userA))
console.log(utsJsonA)
文档已更新 https://doc.dcloud.net.cn/uni-app-x/uts/buildin-object-api/utsjsonobject.html
type b = { name : string; success ?: (res : any) => void; fail ?: (res : any) => void; complete ?: (res : any) => void; }
代码这样子运行 utsJsonA 结果是
{complete: null, fail: null, name: “添加账户”, success: null}
为啥 complete、fail、success都是空的呀
有没有办法不把function序列化成null!!
在 uni-app
中,UTS(Uni-app TypeScript Support)是为了更好地支持 TypeScript 而开发的工具集。虽然 uni-app
原生对自定义类型(type alias)和对象之间的互转有较好的支持,但要实现 type
自定义类型和 UTSJSONObject
(假设这是一个自定义的 JSON 对象类型)之间的互相转换,还是需要通过一些 TypeScript 的高级特性和代码实现。
首先,定义一个自定义类型 MyCustomType
和一个 UTSJSONObject
类型:
// 自定义类型
type MyCustomType = {
name: string;
age: number;
hobbies: string[];
};
// UTSJSONObject 假设为一个通用的 JSON 对象类型
interface UTSJSONObject {
[key: string]: any;
}
然后,实现这两个类型之间的转换函数。由于 TypeScript 类型在运行时会被擦除,所以转换逻辑需要手动编写:
// 将 MyCustomType 转换为 UTSJSONObject
function toUTSJSONObject(obj: MyCustomType): UTSJSONObject {
return {
...obj
} as UTSJSONObject;
}
// 将 UTSJSONObject 转换为 MyCustomType
function fromUTSJSONObject(json: UTSJSONObject): MyCustomType {
return {
name: json.name as string,
age: json.age as number,
hobbies: (json.hobbies as string[]) || []
} as MyCustomType;
}
// 示例使用
const customObj: MyCustomType = {
name: "John Doe",
age: 30,
hobbies: ["reading", "coding"]
};
const jsonObj: UTSJSONObject = toUTSJSONObject(customObj);
console.log(jsonObj); // { name: 'John Doe', age: 30, hobbies: [ 'reading', 'coding' ] }
const convertedBack: MyCustomType = fromUTSJSONObject(jsonObj);
console.log(convertedBack); // { name: 'John Doe', age: 30, hobbies: [ 'reading', 'coding' ] }
在上述代码中:
toUTSJSONObject
函数将MyCustomType
类型的对象转换为UTSJSONObject
类型。fromUTSJSONObject
函数将UTSJSONObject
类型的对象转换为MyCustomType
类型,并在必要时进行类型断言和默认值处理。
注意,这种转换依赖于运行时数据的完整性和准确性。如果 UTSJSONObject
中缺少 MyCustomType
所需的字段,或者字段类型不匹配,可能会导致运行时错误。因此,在实际应用中,可能需要添加更多的错误处理和验证逻辑。