typescript入門 with nem library
2017/09/22
自分が記事を読む立場から、この記事はいつ書かれたのだ!?というのが気になることが多々あったので冒頭と末尾に書き加えるようにします。
nem libraryがtypescriptで作られている、かつtypescriptをおすすめしているようなので、javascriptもまともに書けませんがなにかやってみようということです。
環境
ubuntu 16.04 LTS
npm v5.4.2
atom v1.20.0
typescript v2.5.2
参考
Can't find tsconfig.json command in Atom's toggle panel
TypeScriptってどんなもの? プロ生ちゃんと始めてみよう!
nem-library
NEM Libraryを使ってみる(1)
準備
Install atom-typescript
atomにatom-typescript をインストールした。
ミスなどいろいろ教えてくれるし、保存したら自動でコンパイルさせることもできる。(はずだができていない...)
このパッケージ自体が他に必要なものがあるようで、いろいろと入れていいかと聞いてくるのでいれた。
ディレクトリ
プロジェクトディレクトを作成。
npmで管理する。
$ npm init
いろいろ聞かれてpackage.jsonが作られた。テストようなのであまり調べず全部yes。
ただし、ここでnameをtypescriptと指定したら後でtypescriptをインストールしするときに"Refusing to install as a dependency of itself"と言われた。
同じ名前はダメらしい。
参考:【エラー】Refusing to install as a dependency of itself
tsconfig.jsonを作成。
$ tsc –init
tsconfig.jsonはtsc(typescript compiler)の設定ファイル。
tsconfig.jsonを編集。自分の場合はもっと長かったが、最後に二行書き加えた。意味はsaveすると自動でjavascriptにコンパイルしてくれる。
はずだったが"Unknown compiler option "strict""と言われ続けるのであきらめた。プラグインのエラーか私がなにか間違えているか...そもそもstrictを指定しなくてもエラーがでてしまう。
{ "compilerOptions": { "module": "commonjs", "target": "es5", "noImplicitAny": false, "sourceMap": false }, "compileOnSave": true, # この二行を "buildOnSave": true # 書き加えた。 }
$ tsc fileName.ts #コンパイル
Install nem-library and typescript
typescriptとnem-libraryをプロジェクトフォルダにインストール
$ npm i -D typescript nem-library
nem-libraryを使ってコンパイル => 実行までしてみた。
サンプルとしてblock chainの高さを参照しました。
main.ts import {ChainHttp, NEMLibrary, NetworkTypes, Address} from "nem-library"; NEMLibrary.bootstrap(NetworkTypes.TEST_NET); //MAIN_NETも指定可 const chainHttp = new ChainHttp(); chainHttp.getBlockchainLastBlock().subscribe(block => { console.log(block.height); });
$ tsc main.ts
実行
$ node main.js
以下のjsonが返されるので、block.heightとしてlogにはheightだけを表示させた。
Block { height: 1125052, type: 1, timeStamp: 78220063, prevBlockHash: { data: 'fce75e7787bff3549045bd5f506f0871c41815791eb6c03c0c8af6b2a7dc0ba0' }, signature: 'f051cc25acccb6442687aa34e2df9ab80de759462d0800867feea75651f5572e1099e8478cdea371a0dec42bcee8d0d82ce049ac67f69bd8983533896c5af606', signer: PublicAccount { address: Address { value: 'TALIC367CZIV55GIQT35HDZAZ53CN3VPB3G55BMU', networkType: 152 }, publicKey: '595613ba7254a20f1c4c7d215103509f9f9c809de03897cff2b3527b181274e2' }, transactions: [], version: -1744830463 }
2017/09/22