intra-martはTypeScriptでも書けそう

intra-mart開発されてますか?

型推論があるTypeScriptを入れたいですね…。

ES5対応と同様にトランスコンパイルすればスクリプト開発のファンクションコンテナとして振舞えそうです。

フレームワーク対応

@ts-ignore…ではありませんでした。(1/17追記)

アンビエント宣言、declareを使用することで外部パッケージをコンパイラーに教えることができます。

 

//foo.ts
function greeter(person) {
    return "Hello, " + person;
}

let user = "Jane User";

document.body.textContent = greeter(user);
// loadはファンクションコンテナ側の関数
declare function lead(path: string): void;
load('foo');
//コンパイル後foo.js
function greeter(person) {
    return "Hello, " + person;
}
var user = "Jane User";
document.body.textContent = greeter(user);
// loadはファンクションコンテナ側の関数
load('foo');

アンビエント宣言の一覧を作りたい

ここのAPIドキュメント仕様の互換対応表の中にAPIリスト一覧がExcel形式であります。(2020/01/17確認)。

こちらのScpirtAPIとCliant Side JavaScriptに一覧があるので、マクロ等でパースしてimart.d.tsに入れてあげましょう。

入れる利点

サーバーサイド側は型推論が一番大きいです。(一応イントラマート自体はJavaでも書けるんです。)

メリットは下記の記事が分かりやすかったです。

TypeScriptを使って嬉しかったこと

JavaScriptを大規模開発(スケール)させるための言語なので、沢山メリットがあります。

静的型推論は、定義した型を保持しておいて、コンパイル時に指摘してくれる機能といえば伝わるかなーと。

stringのuserに数値を入れようとするとコンパイルエラーが起こります。(エディタ上でも指摘してくれます。

//foo.ts
let user = "Jane User";
user = 1; //コンパイルエラー

//errorlog
src/foo.ts:6:1 - error TS2322: Type '1' is not assignable to type 'string'.

6 user = 1;
  ~~~~


Found 1 error.

intra-martでスクリプト開発を行う場合、DB操作で型を指定することがあり、そこで曖昧な指定をしていると、型違反でエラーが起こってしまうので、どのみち型をしっかり定義しておいた方がいいですよねって状況が起こります。

実装時は厳密に取り扱いはするんですが、後から見た時にコードを全部見ないと型を追えないのはつらいので、ゆくゆくはTSでトランスコンパイルしてファンクションコンテナとして動くように…。

プラットフォーム上では、tsでファンクションコンテナを定義できるともっと嬉しいです…。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする