我正在尝试为PDFBox-Android编写一个插件,并使用nativescript中的android-dts-generator。 我正在使用稍微修改的 jar 运行该工具(因为命名空间函数无效(。
当我编译打字稿文件时,一切都很好。 但是当我运行插件(使用npm run demo.android(时,我收到以下错误:
../src/platforms/android/typings/pdfbox-android.d.ts:1611:19 - error
TS2720: Class 'PairData0Format0' incorrectly implements class
'Comparator<Array<number>>'. Did you mean to extend
'Comparator<Array<number>>' and inherit its members as a subclass?
Property 'equals' is missing in type 'PairData0Format0'.
1611 export class PairData0Format0 extends
com.tom_roush.fontbox.ttf.KerningSubtable.PairData implements
java.util.Comparator<native.Array<number>> {
~~~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:4714:18 - error
TS2720: Class 'COSArray' incorrectly implements class
'Iterable<COSBase>'. Did you mean to extend 'Iterable<COSBase>' and
inherit its members as a subclass? Property 'wait' is missing in
type 'COSArray'.
4714 export class COSArray extends
com.tom_roush.pdfbox.cos.COSBase implements
java.lang.Iterable<com.tom_roush.pdfbox.cos.COSBase> {
~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:5034:18 - error
TS2720: Class 'COSName' incorrectly implements class
'Comparable<COSName>'. Did you mean to extend 'Comparable<COSName>'
and inherit its members as a subclass? Property 'wait' is missing in
type 'COSName'.
5034 export class COSName extends
com.tom_roush.pdfbox.cos.COSBase implements
java.lang.Comparable<com.tom_roush.pdfbox.cos.COSName> {
~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:7309:33 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
7309 public writeTokens(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:7463:32 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
7463 public setThreads(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:11087:31 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
11087 public setPages(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:11099:38 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
11099 public setEmbeddedFDFs(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:11192:33 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
11192 public setOptions(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:17568:33 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
17568 public static sort(param0:
java.util.List): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:17569:33 - error
TS2314: Generic type 'List<E>' requires 1 type argument(s).
17569 public static sort(param0:
java.util.List, param1: java.util.Comparator): void;
~~~~~~~~~~~~~~
../src/platforms/android/typings/pdfbox-android.d.ts:17569:57 - error
TS2314: Generic type 'Comparator<T>' requires 1 type argument(s).
17569 public static sort(param0:
java.util.List, param1: java.util.Comparator): void;
~~~~~~~~~~~~~~~~~~~~
有人可以告诉我如何解决它们吗?我真的需要打字。
解决方案是使用泛型和超级参数来生成类型。
最后一个命令如下所示:
java -jar dts-generator/build/libs/dts-generator.jar -input dts-generator/jar-files/pdfbox-android.jar -input-generics libs/generics.txt -super ${ANDROID_HOME}/platforms/android-19/android.jar
更多信息可以在我在github上的问题帖子中找到: https://github.com/NativeScript/android-dts-generator/issues/35#issuecomment-431419734