KotlinãDefinitelyTypedã«å¯¾å¿ããã¨èããã®ã§æ©é試ãã¦ã¿ã
æ¦è¦
- ã¡ãã£ã¨è©¦ããã ãã®ã¡ã¢
- TypeScriptã®åå®ç¾©æ å ±ãKotlinã®åå®ç¾©æ å ±ã«å¤æããKotlinå ¬å¼ã®ãã¼ã«
- d.tsãåã®å®ç¾©ãé å¼µã£ã¦ããã¦ããã°ãKotlinã§æ¥½ã§ãã
- ãã¡ã¤ã«åããã®ã¾ã¾åºåã®ãã¡ã¤ã«åã«ä½¿ãã®ã§ãè¤æ°ã®ã©ã¤ãã©ãªã使ãå ´åã¯å·¥å¤«ãå¿ è¦
- è¤æ°ã®ãã¡ã¤ã«ã«ã¾ããã£ã¦å®ç¾©ããã¦ããæ å ±ãã¾ã åãæ±ããªãã®ã§ãã©ããããã®ãâ¦
ã¤ã³ã¹ãã¼ã«
npmã§ã¤ã³ã¹ãã¼ã«ããã ã
npm install ts2kt -g
ä½¿ãæ¹
ts2kt ã³ãã³ãã«å¤æããåå®ç¾©ãã¡ã¤ã«ã渡ãã ãããªãã·ã§ã³ã¯ãã£ã¬ã¯ããªã¼ãæå®ãã d ã ãã
ä¾ï¼axiosã®ktãã¡ã¤ã«ãåå¾ãã
$ npm init -y
$ npm install axios --save
$ mkdir kt
$ ts2kt -d kt node_modules/axios/index.d.ts
Converting node_modules/axios/index.d.ts
Save declarations:
kt/index.kt
ããã§ã kt/index.kt ãåºæ¥ä¸ãã
æ®å¿µãªã¨ãã
ããã¤ããµãã¼ãããã¦ããªãæ©è½ããã
importtypeofnever
ç¹ã« import ã対å¿ãã¦ããªãããã«ãè¤æ°ã®ãã¡ã¤ã«ã«ã¾ãããd.tsãããå ´åãåæ
å ±ãæ£ç¢ºã«åºã¦ããªãã£ã½ã(ããããã£ã¦ãªã)
ãã¨ããã°ãªã®ããããã¨ãåå®ç¾©ãééãã¦ããã®ããããããã©ãè½ã¡ã¦ãã¾ãd.tsããã£ãã
$ npm install @types/whatwg-fetch
$ ts2kt -d fetch node_modules/\@types/whatwg-fetch/index.d.ts
Converting node_modules/@types/whatwg-fetch/index.d.ts
ts2kt: "TypeQuery" kind unsupported yet here! (node_modules/@types/whatwg-fetch/index.d.ts:11:19 to 11:39)
ts2kt: "TupleType" kind unsupported yet here! (node_modules/@types/whatwg-fetch/index.d.ts:24:33 to 24:49)
/usr/local/lib/node_modules/ts2kt/node_modules/typescript/lib/typescript.js:5738
return identifier.length >= 3 && identifier.charCodeAt(0) === 95 /* _ */ && identifier.charCodeAt(1) === 95 /* _ */ && identifier.charCodeAt(2) === 95 /* _ */ ? identifier.substr(1) : identifier;
^
TypeError: Cannot read property 'length' of undefined
at Object.unescapeIdentifier (/usr/local/lib/node_modules/ts2kt/node_modules/typescript/lib/typescript.js:5738:26)
at TsClassToKt.TsClassifierToKt.visitMethodDeclaration_7vsj57$ (/usr/local/lib/node_modules/ts2kt/ts2kt.js:969:35)
at visitNode (/usr/local/lib/node_modules/ts2kt/ts2kt.js:3939:15)
at TsClassToKt.visitClassDeclaration_4wvyue$ (/usr/local/lib/node_modules/ts2kt/ts2kt.js:1024:7)
at TypeScriptToKotlin.visitClassDeclaration_4wvyue$ (/usr/local/lib/node_modules/ts2kt/ts2kt.js:1393:16)
at visitNode (/usr/local/lib/node_modules/ts2kt/ts2kt.js:3921:15)
at /usr/local/lib/node_modules/ts2kt/ts2kt.js:3897:7
at visitEachNode (/usr/local/lib/node_modules/ts2kt/node_modules/typescript/lib/typescript.js:8343:30)
at Object.forEachChild (/usr/local/lib/node_modules/ts2kt/node_modules/typescript/lib/typescript.js:8503:24)
at forEachChild_0 (/usr/local/lib/node_modules/ts2kt/ts2kt.js:3901:24)