Hatena::ブログ(Diary)

Ko-Taのバ・ー・ルのようなもの

2017-09-01

Netjs

Netjsもduocodeと同じくC#からTypeScript(JS)へ変換するプロジェクトです。ちょっと試してみましょう。

インストール

  • Netjs

https://github.com/praeclarum/Netjs

これはduocodeほど環境を必要とされません。githubからcloneして、コンパイルしてexeとして使用します。

出力はTypeScriptなので、まだならその環境もインストールしておきましょう。

変換

c#のクラスモジュール、特にPCL(ポータブル・クラス・ライブラリ)が望ましいみたいです。

C#でDLLで吐かせた後、そのDLLからTypeScriptに変換します。

公式の通り

netjs Library.dll

でtsが出力されます。

これも mscorlib 依存ですが、そのファイルは一緒に出力されません。どこにあるのかというと、cloneしたもののトップディレクトに「mscorlib.ts」として存在しするので、適当にコピーして環境にもってきましょう。

コンパイルはバージョンの指定「-t ES5」が必要です。無いと怒られます。

tsc -t ES5 mscorlib.ts Library.ts --out out.js 

で、1つのファイルにまとめられて完了です。

duocodeと比べると「mscorlib.ts」のファイル容量がかなり少ないです。これはtsによるところもあるでしょうが、バージョンが古いみたいです。

例えば下記のようなクラスを変換してみたところ

	public class text
	{
		/**
		 * A to Z change low case.
		**/
		static public string lowercase(string s)
		{
			int len = s.Length;
			//StringBuilder sb = new StringBuilder(len);    // error unsupport capacity
			StringBuilder sb = new StringBuilder();

			for (int i = 0; i < len; i++)
			{
				char c = s[i];
				if ((c >= 'A') && (c <= 'Z')){
					c = (char)((int)c + 32);
				}
				sb.Append(c);
			}
			return sb.ToString();
		}
	}
....

StringBuilder Class は用意されていますが、StringBuilder.capacityが未実装で、変換後にエラーが出ました。

github も2年前に更新となっているので、長らくプロジェクトは停滞しているみたいです。


まとめ

duocodeに比べるとTypeScriptで出力されるのがとても良い感じなのですが、プロジェクトとしてはバージャンアップが望めないみたいなので他を当たるのが良さそうです。