如何通过JSDoc让VSCode识别Rhino的importPackage导入?
解决Rhino中importPackage后VSCode类型识别问题
针对你遇到的Rhino环境里用importPackage导入Java类成员后,VSCode无法识别直接调用的问题,用JSDoc有两种实用的解决方式:
方法一:逐个声明全局变量类型
既然importPackage会把目标类的成员挂载到当前全局命名空间,你可以直接给每个要用到的成员用JSDoc声明类型,关联到你已有的Typescript声明:
importPackage(Packages.foo.bar.xyzzy); /** @type {typeof Packages.foo.bar.xyzzy.memberA} */ var memberA; /** @type {typeof Packages.foo.bar.xyzzy.methodY} */ var methodY;
这样VSCode就能识别memberA和methodY的类型,提供代码补全和类型检查,同时不影响Rhino的正常运行。
方法二:批量关联类型(适合成员较多的情况)
如果目标类的成员很多,先通过@typedef定义整个类的类型别名,再批量声明全局成员的类型:
// 先定义类型别名 /** @typedef {typeof Packages.foo.bar.xyzzy} XyzzyFullType */ importPackage(Packages.foo.bar.xyzzy); // 批量声明全局成员的类型 /** @type {XyzzyFullType['memberA']} */ var memberA; /** @type {XyzzyFullType['methodY']} */ var methodY; // 其他成员依此类推
这种方式本质是利用JSDoc给全局变量绑定已有的Typescript声明类型,让VSCode能识别importPackage的导入行为,同时完全兼容Rhino的运行环境,不需要用它不支持的class语法。
内容的提问来源于stack exchange,提问作者The Archetypal Paul
相关产品推荐
相关产品推荐

