新闻详情

新闻详情

首页 / 资讯中心 / 详情

Cangjie/cangjie_js_interop 类型映射全解析:JSValue 与仓颉类型互转速查手册

发布时间:2026/11/12 16:54:36来源:尧图网络
Cangjie/cangjie_js_interop 类型映射全解析:JSValue 与仓颉类型互转速查手册
Cangjie/cangjie_js_interop 类型映射全解析JSValue 与仓颉类型互转速查手册【免费下载链接】cangjie_js_interop项目地址: https://gitcode.com/Cangjie/cangjie_js_interopCangjie/cangjie_js_interop仓颉与 JavaScript 互操作库为仓颉调用 JavaScript 提供了跨语言调用的完整能力其中JSValue 类型映射与互转是所有跨语言数据流动的核心JS 侧的number、string、object……到了仓颉侧分别由谁承接、用什么方法转换、能存活多久这篇全解析给出可直接对照的速查手册 。git clone https://gitcode.com/Cangjie/cangjie_js_interop为什么类型映射是互操作的核心 仓颉调用 JavaScript 时两边类型并不长得一样JS 侧的类型需要仓颉侧的对应引用来承接跨语言传参和回调也依赖明确的对照关系。互操作库为此做了三件事为每种已支持的 JS 类型提供对应的仓颉引用类型提供统一的JSValue 类型映射体系做类型判断与转换按弱引用 / 强引用两类管理跨语言对象的生命周期。理解这三层基本就掌握了整库的使用逻辑。完整类型映射表一眼看懂对照关系下表整理自官方用户手册建议收藏对照使用js_interop_user_manual.mdJS 类型仓颉引用类型typeof类型支持情况UndefinedJSUndefinedJSType.UNDEFINED✅ 已支持NullJSNullJSType.NULL✅ 已支持BooleanJSBooleanJSType.BOOLEAN✅ 已支持NumberJSNumberJSType.NUMBER✅ 已支持StringJSStringJSType.STRING✅ 已支持ObjectJSObjectJSType.OBJECT✅ 已支持ArrayJSArrayJSType.OBJECT✅ 已支持MapJSMapJSType.OBJECT✅ 已支持FunctionJSFunctionJSType.FUNCTION✅ 已支持Symbol—JSType.SYMBOL⏳ 暂不支持ArrayBuffer / Date / Set / Promise / RegExp / Class / BigInt—对应JSType枚举⏳ 暂不支持 速记口诀9 种已支持三小强String、Object 系、Function可跨作用域其余只在作用域内有效。强引用还是弱引用决定值的寿命⏳同样是 JS 数据引用方式不同生命周期差别很大跨语言弱引用JSValue、JSUndefined、JSNull、JSBoolean、JSNumber——不阻止 JS 对象被回收只在scope作用域内有效跨语言强引用JSString、JSObject、JSArray、JSMap、JSFunction——统一继承自JSHeapObject做生命周期管理可跨scope使用在上下文存活期间有效。⚠️ 实战要点如果你要把值留给 JS 回调的仓颉函数JSLambda稍后使用请优先选择强引用类型否则可能拿到已被回收的对象。JSValue互转枢纽的三族方法 JSValue是 JavaScript 统一类型在仓颉侧的弱引用表示直接参与数据交互。它的实现位于 value.cj方法可分为三族①is族 —— 判断类型不转换isUndefined()、isNull()、isNullOrUndefined()、isBoolean()、isNumber()、isString()、isArray()、isObject()、isFunction()、isMap()、isSymbol()、isBigInt()、isPromise()、isExternal()②as族 —— 转为引用类型asUndefined()、asNull()、asBoolean()、asNumber()、asString()、asObject()、asArray()、asMap()、asFunction()③to族 —— 取出仓颉原生类型toBool()→Bool、toString()→String、toNumberFloat64()→Float64、toNumberInt32()→Int32、toNumberInt64()→Int64、toNumberUint32()→UInt32另有typeOf()返回具体的JSVM_ValueType枚举。互转方向速查表JS → 仓颉 与 仓颉 → JS ⚡JS → 仓颉拿到 JS 值后按三步走判断 → 取引用 → 取原生值场景转换路径JS 数字 → 仓颉整数value.isNumber()→asNumber()→toNumberInt64()JS 数字 → 仓颉浮点value.asNumber()→toNumberFloat64()JS 字符串 → 仓颉字符串value.asString()→toString()JS 布尔 → 仓颉布尔value.asBoolean()→toBool()JS 数组 → 逐元素处理value.asArray()→array[i]继续判断JS 函数 → 直接调用value.asFunction()→globalCall([...])仓颉 → JS统一走JSContext工厂方法详见 context.cj仓颉值创建方法得到的 JS 类型Int32 / Int64 / UInt32 / Float64context.number(…)NumberStringcontext.string(…)StringBoolcontext.boolean(…)BooleanArrayToJSValuecontext.array(…)Array键值对集合context.object(…)/context.map(…)Object / Map(JSContext, JSCallInfo) - JSValue函数context.function(…)Function特殊值context.undefined()/context.null()Undefined / Null所有实现了ToJSValue接口的仓颉类型包括JSValue本身都能调用toJSValue(context)完成封装写入JSObject/JSArray属性时会自动转换非常顺手 ✨。两个最常踩的坑 ⚠️弱引用别跨作用域传JSValue等弱引用类型出newScope后可能失效需要长期持有的数据先as成强引用类型转换前先判断as/to族在类型不符时会抛异常建议先用is族确认类型或配合typeOf()排查再执行转换。延伸阅读与源码索引 类型映射与生命周期规格js_interop_user_manual.md全部 API 参考js_interop_api_docs.md各类型映射实现源码value.cj、array.cj、map.cj、object.cj、string.cj、function.cj掌握这份 JSValue 与仓颉类型映射速查手册后跨语言互转基本可以查表即用。祝开发顺利 【免费下载链接】cangjie_js_interop项目地址: https://gitcode.com/Cangjie/cangjie_js_interop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉