Skip to content

Instantly share code, notes, and snippets.

@yokotaso
Created October 12, 2018 00:11
Show Gist options
  • Save yokotaso/519eff72ed20a3647fffd6aace64b5a4 to your computer and use it in GitHub Desktop.
Save yokotaso/519eff72ed20a3647fffd6aace64b5a4 to your computer and use it in GitHub Desktop.
TypeScript入門

プログラムのモジュール化

テストコードや再利用可能なプログラムを作っていくためには、モジュールシステムを利用する必要があります。 ですが、kintone�の上でプログラムを書くとIE11をサポートする関係でモジュール機能を利用することができません。

今回は、TypeScriptとWebpackという技術を使ってモジュール機能を実現します。

TypeScriptとは

Microsoftが開発しているJavaScriptをコンパイルするための言語。 JavaScriptに対して型情報をつけることができる。

例えば、次の関数があるとする。次の関数をみるといろいろ疑問が湧いてくる

  • 引数は数値?文字列?
  • 期待する結果は数値?文字列?
  • 引数が文字列とすれば、引数の合計を文字列化したものか?それとも文字列連結?
function sumOf(a, b) {
    return a + b;
}

JavaScriptは動的言語と呼ばれている。安全にJavaScriptを利用するために、型付の言語から JavaScriptに変換することで、型安全(≒品質の高い)なプログラムを書くことができる。

function sumOf(a:number, b:number):string {
    return new String(a + b);
}

numOf("123", "456");

これをコンパイルしてみよう。コンパイルエラーが起きてしまう。関数の安全な呼び出しを保証できます。 メンテナンスの回数が増えていけば増えていくほど、型の恩恵に預かることができる。

node node_modules/typescript/bin/tsc src/add.ts

プログラムのモジュール化

TypeScriptとWebpackという仕組みを使って、利用しているプログラムを一つにまとめることができます。 最近のモダンなWeb開発で採用されている仕組みです。

インポートとエクスポート

先程の関数を sum.tsとして保存して、呼び出せるようにしてみよう。

とりあえず覚えておくことはこれだけです。

export function sumOf(...) 

さらにインポートの仕方は次のようになります。

import {sumOf} from './sum'

sumOf(1,2); // -> returns "3"

webpackとは?

前にも書いたとおりImport,Export機能は使えるブラウザが限られている。 だがwebpackを利用すると必要なプログラムをすべてインクルードして、1つのファイルにまとめてくれる。

これを利用すれば、kintoneに登録するファイルは一つでいい。

実際に使ってみる

package.jsonのscript.build の中に内容が入っている。 webpackの設定はwebpack.conf.js

npm run build

コンパイルされたコードを見てみよう。

テストを書いてみよう

モジュールシステムが利用できるようになると、テストコードを書く準備が整う。 テストコードを試しに書いてみよう。

@ma-onodera-dotcom
Copy link

function sumOf(a:number, b:number):string {
return new String(a + b);
}

numOf("123", "456");

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment