Rso's Jotter

日々の開発の知見のメモやその他雑記

TypeScriptことはじめ(環境準備だけ)

TypeScriptは読むことはあっても、真面目に書く機会がなかったので、 少し練習してみました。そのためにイチから始めるための環境準備作業をメモしておきます。

導入

TypeScriptをコンパイルしてJSを吐くための typescript をインストールします。

 $ npm init
 $ npm install typescript

サンプルファイル作成

function hello(name: string): void {
  console.log('hello ' + name + " !")
}

let yourname: string = "Yamada";
hello(yourname)

JSにコンパイル

 $ ./node_modules/.bin/tsc sample.ts  
 -> sample.js が出力される
 $ node sample.js
 hello yamada !

コンパイルめんどくさい時は

ts-nodeを使用すると、コンパイル不要でnodeに実行させられます。

 $ npm install ts-node
 $ ./node_modules/.bin/ts-node sample.ts
 helloyamada !

FirebaseのCloud Functionでデプロイしてみる

nodeでただ単に動かすだけだと面白くないので、 Cloud Functionでも動かしてみます。

と言っても以下のサンプルに追記するだけです。 github.com

typescript-getting-started を cloneして、

'use strict';

import * as functions from 'firebase-functions'

export const helloWorld = functions.https.onRequest((request, response) => {
 function hello(name: string): string {
   return 'hello ' + name + ' !'

 }

 let yourname: string = "Yamada";
 response.send(hello(yourname));
});

これを適当なfirebaseのプロジェクトで以下のように

 $ firebase init functions
 $ npm run deploy 

してやればCloud Function上でも動きました。

Serverlessを使用してLambdaでも動かしてみる

とりあえず動かしてみるだけばっかりですが、ついでにLambdaでもやってみます。

serverless フレームワークの設定が済んでいれば、テンプレートからすぐに実行できるとのこと。

 $ sls create -t aws-nodejs-typescript -p ts-test   
 $ cd ts-test
 $ cat handler.ts 
   ... ここに処理を記述するtsファイルが生成されます
 $ npm install
 $ sls deploy
 $ sls invole -L -f hello
{
    "statusCode": 200,
    "body": "{\n  \"message\": \"Go Serverless Webpack (Typescript) v1.0! Your function executed successfully!\",\n  \"input\": {}\n}"
}

...という感じに、さくっと実行まで行けました(すでにserverlessフレームワークを使用していたので)。

準備完了

Nuxt.jsとかで動いているJSをいきなりTypeScriptにすると負荷がかかりそうなので、 まずはJSで動いているFunction系をTypeScriptに更新したり新規で作ったりしながら、慣れていこうかなと思います。

参考