TypeScript-Declarations更新滞后问题
确实存在更新滞后的问题. 包括 AutoJs6 声明文件 (AutoJs6-TypeScript-Declarations) 及 AutoJs6 应用文档 (AutoJs6-Documentation) 衍生项目. 这些衍生项目是需要根据 AutoJs6 主项目进行调整的, 包括更新及修改等. 更多时候, 我会将有限的精力和时间放在 AutoJs6 主项目的开发上, 这会造成衍生项目的更新迟缓. 考虑到 AutoJs6 目前已暂停更新, 加上当前 Issue 已表明衍生项目的更新需求, 我会将衍生项目的更新加入计划.
好的,感谢作者大大,辛苦了. 现在Ai开发可以完成一些重复性的工作,不知道对于类型声明这种任务能不能帮到.
确实存在更新滞后的问题. 包括 AutoJs6 声明文件 (AutoJs6-TypeScript-Declarations) 及 AutoJs6 应用文档 (AutoJs6-Documentation) 衍生项目. 这些衍生项目是需要根据 AutoJs6 主项目进行调整的, 包括更新及修改等. 更多时候, 我会将有限的精力和时间放在 AutoJs6 主项目的开发上, 这会造成衍生项目的更新迟缓. 考虑到 AutoJs6 目前已暂停更新, 加上当前 Issue 已表明衍生项目的更新需求, 我会将衍生项目的更新加入计划.
在新的TypeScript-Declarations更新之前,还有没有什么办法能够使用到最新的类型提示呢?其它小伙伴用的什么办法呢.
是的, 而且 AutoJs6 最近几个版本的开发, 也都得到了不少 AI 技术的帮助与支持. 过去, AutoJs6 声明文件 (AutoJs6-TypeScript-Declarations) 项目中 d.ts 文件的生成, 通常是根据 \src\main\assets\modules*.js 文件中的模块属性及方法, 以此对照并写入声明文件中. 这个过程很可能可以通过 AI 来自动实现, 最后可以对生成的内容做核查, 修正或补充.
自 AutoJs6 6.6.0 起, 内置 js 模块全部转换为 kotlin 格式, 位于\src\main\java\org\autojs\autojs\runtime\api\augment\ 文件夹中.
如果你需要尽快使用新版本增加的 API 类型提示, 可以尝试手动添加 (或结合 AI 技术添加) 属性或方法到对应的 d.ts 文件当中.
例如, ui 模块新增了 statusBarIconLightBy 方法:
@JvmStatic
@RhinoRuntimeFunctionInterface
fun statusBarIconLightBy(scriptRuntime: ScriptRuntime, args: Array<out Any?>): Undefined = ensureArgumentsOnlyOne(args) { refColor ->
ensureActivity(scriptRuntime) { activity ->
runRhinoRuntime(scriptRuntime, newBaseFunction("action", {
Colors.toIntRhino(refColor).also { ViewUtils.setStatusBarIconLight(activity, ViewUtils.isLuminanceDark(it)) }
}, NOT_CONSTRUCTABLE))
}
UNDEFINED
}
可以看到, 它的方法签名为 statusBarIconLightBy(refColor: OmniColor): void, 因此可以在声明文件项目中的 aj6-int-ui.d.ts 文件, 添加如下内容:
class UI extends org.autojs.autojs.runtime.api.UI {
/* 其他代码内容... */
statusBarIconLightBy(refColor: OmniColor): void;
/* 其他代码内容... */
}
再例如, pinyin 模块有一个 convert 方法:
@RhinoSingletonFunctionInterface
fun convert(args: Array<out Any?>): NativeArray = ensureArgumentsLengthInRange(args, 1..2) { argList ->
val (hansArg, options) = argList
val hans = coerceString(hansArg, "")
val opt = options as? NativeObject ?: newNativeObject()
/* 其他代码省略... */
}
因此可以新建一个 aj6-int-pinyin.d.ts 文件, 并添加以下内容 (仅供参考):
// Type definitions for AutoJs6 internal module pinyin
//
// Definitions by: SuperMonster003 <https://github.com/SuperMonster003>
// TypeScript Version: 5.7.3
//
// Last modified: Jul 25, 2025
//
// noinspection JSUnusedGlobalSymbols
/// <reference path="../android.d.ts"/>
/// <reference path="../libraries.d.ts"/>
/// <reference path="../index.d.ts" />
/**
* @Source /src/main/java/org/autojs/autojs/runtime/api/augment/pinyin/Pinyin.kt
*/
declare namespace Internal {
import List = java.util.List;
import PinyinMode = org.autojs.autojs.runtime.api.augment.pinyin.PinyinCore.PinyinMode;
import PinyinStyle = org.autojs.autojs.runtime.api.augment.pinyin.PinyinCore.PinyinStyle;
class Pinyin {
/**
* @param hansArg 要转为拼音的目标字符串 (汉字).
* @param options 可选, 用于指定拼音风格, 是否启用多音字等.
* @return 返回的拼音列表.
*/
public convert(hansArg: String, options?: ConvertOptions): PinyinResultList;
}
class PinyinResultList extends Array<Array<String>> {
/**
* 合并二维字符串数组为一维字符串数组.
*
* @param arr 二维数组, 如 [["zhāo", "cháo"], ["yáng"], ["dōng"], ["shēng"]]
* @return 合并后的字符串数组, 一维结果, 如 ["zhāoyáng", "cháoyáng", "dōng", "shēng"]
*/
public combo(arr: List<List<String>>): List<String>;
/**
* 组合两个拼音数组为一维字符串数组.
*
* @param a1 第一个拼音数组, 如 ["zhāo", "cháo"]
* @param a2 第二个拼音数组, 如 ["yáng"]
* @return 组合后的一维字符串数组, 如 ["zhāoyáng", "cháoyáng"]
*/
public combo2array(a1: List<String>, a2: List<String>): List<String>;
/**
* 合并多个拼音数组, 形成一个新的二维数组.
* 每两个拼音元素形成一个元组数组.
*
* @param arr 二维数组(每组拼音数组)
* @return 合并后的二维拼音数组, 如 [[hai, qian], [huan, qian]]
*/
public compact(arr: List<List<String>>): List<List<String>>;
}
interface ConvertOptions {
/**
* 模式.
*
* @default 0 (PinyinMode.NORMAL)
*/
mode?: OmniPinyinMode | null;
/**
* 风格.
*
* @default 1 (PinyinStyle.TONE)
*/
style?: OmniPinyinStyle | null;
/**
* 是否分组.
*
* @default false
*/
group?: boolean;
/**
* 是否分词.
*
* @default false
*/
segment?: boolean;
/**
* 是否允许多音字.
*
* @default false
*/
heteronym?: boolean;
}
declare type OmniPinyinMode = PinyinMode
| 'normal' | 0
| 'surname' | 1
| 'place_name' | 'placename' | 2;
declare type OmniPinyinStyle = PinyinStyle
| 'normal' | 0
| 'tone' | 1
| 'tone2' | 2
| 'initials' | 3
| 'first_letter' | 4
| 'to3ne' | 5;
}
记得在 aj6-int-init.d.ts 文件中加入新建模块的全局声明:
declare let pinyin: Internal.Pinyin;
declare let $pinyin: Internal.Pinyin;
可以看出, 声明文件中的内容生成, 需要对模块的功能和设计目的等有相对深入且全面的了解, 因此具备一定程度的挑战性.
org.autojs.autojs.runtime.api.augment.pinyin.PinyinCore.PinyinMode 等类的声明类型, 位于 aj6-main-app.d.ts 文件中. 此文件的生成, 需要用到 Android d.ts Generator by NativeScript 工具, 及 AutoJs6 最新项目编译的 class.jar 文件 (路径样例: \app\build\intermediates\compile_app_classes_jar\appDebug\bundleAppDebugClassesToCompileJar\classes.jar). 如对这部分内容感兴趣或存在疑问, 可继续反馈.