Typescriptでnamespace使うとimportができない
Typescriptでハマったのでメモ
namespace内のクラスでEventEmitterを使おうとしたところエラーになった
namespace Example { import * as events from "events"; //Error: Import declarations in a namespace cannot reference a module. export class Test { constructor(){} } }
ぐぬぬ、ならばnamescape外に書けばいいんだな
import * as events from "events"; namespace Example { export class Test { constructor(){} } }
これで一安心……と思ったら参照先でエラーになっている……
import Test = Example.Test//ここがエラーになる
ど、どうすればいいんだ???
悩みに悩んだ結果、namespace を勘違いしていた模様 (javaの感覚で使っていた……)
そもそも、TypeScriptは1ファイル1モジュール。namespaceは1ファイル内でモジュールの構造を作るために使うもの(内部モジュール) よって、namespaceなんて書かなければ問題はした。TypeScriptなれるまでまだもうちょっと時間かかりそう……
import * as events from "events"; export class Test { constructor(){} }
import * as test from "./test.ts"
追記(2016/03/27)
id:ConquestArrow さんから指摘があったので修正
namescapeもexportをつけることで外部から参照できるようになるそうだ
つまり、このように書けば参照できる。なるほど。勉強になった
export namespace Example { //中略 }
msys2+zsh+git+preztoの環境を作る
会社のPCはUnity3DでShader書くためにWindowsにほぼ固定された*1
とはいえ、zshとか使いたいのでmsys2を導入した。ついでにzshrcの編集とかなるべくやりたくないのでpreztoを導入してMacを使っていた頃と似たようなコマンドライン環境を手に入れる
msys2
上記のURLからインストーラーを入手できので、それでインストール(ここでは64bit版)。デフォルトならc:\msys64にインストールされる
終わったら、プログラムグループにMSYS2 64bitというフォルダができるのでMSYS2 SHELLをクリックする
これでシェルが起動するので、公式サイトの説明に従いコマンドを実行
update-core
これでシステムがアップデートされる
メモとして、Mactype*2が起動していると、証明書エラーが出てアップデートできなくなるので、Mactypeをアンインストールするか、msys2でMactypeを使わないように無視設定をする
pacman -Su
これでインストールされているパッケージの更新ができる
msys2ではArch Linuxで使われているpacmanでパッケージ管理をする
これが終わったら、一旦ターミナルを終了する(bashなどが更新されるため)
各種コマンド
git
まずはgitからインストール
pacman -S git
これでインストール完了
git --version
とコマンドを実行すれば
git version 2.7.2
Gtiのバージョンが表示されるはず
winpty
msys2で標準でついてくる端末エミュレータのminttyはGitのような対話型のコマンドラインWindowsアプリをうまく扱えない問題があるので、winptyを入れて対策をする
pacman -S winpty-git
でインストール完了。-gitとあるが、別にGit以外にもNode.jsなどにも使える
今後Gitを使う場合は
winpty git
と使うと、正常に対話型のインタフェースが使えるはず
また、Windowsの通常のコマンドラインアプリを使う場合もそのまま実行すると文字化けすることがあるので、winpty使って回避することができる
winpty ipconfig
zsh
念願のzshをインストール
インストールが終わったら、ターミナルを一旦終了し、C:\msys64\msys2_shell.batを書き換える
現状だと39行目
メモとして、ここにwinptyを追加してどのコマンドラインアプリもwinpty経由で使うという方法もある
start %WD%mintty -i /msys2.ico /usr/bin/winpty /usr/bin/zsh --login %*
ただし、後述のpreztoがうまく動かなかったり、zshの場合だと「%」が何故かコマンドを実行するたびに出てくるというバグにあたってしまうのでおすすめできない
必要によってはmingw64_shell.batやmingw32_shell.batも同様に書き換える
prezto
GitHub - sorin-ionescu/prezto: The configuration framework for Zsh
preztoも公式サイト通りにインストールする
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
gitで取得し
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
をコピペして、コマンドラインで実行。必要なファイルが生成される
ターミナルを再起動すればpreztoがインストールされるはず
参考URL
TypeScriptを快適にかける環境を求めて
アーティストなのでAmazonWebServiceとNode.jsとTypeScriptは必須の道具である*1
そんなわけでTypeScriptを快適に書くための環境を探したところ、Visual Studioはうまく使えず、Atomも微妙だったので、Visual Studio Code(以下、vscode)にすることにした
設定方法は公式サイトが詳しい
コード補完もいけるし、TypeScriptが出力したjsファイルをファイルツリーから消しておくとかもできる 何より各プロジェクトの設定を.vscodeフォルダ内に記述するの便利! Gitのリポジトリにも登録しておけば各PCで設定を共有できるのがありがたい
あと、Taskの設定が面白そう
Glupで管理するのもいいけど、うまくやればnpmとvscodeだけで快適になりそう
デバッガーの設定もしてみた。設定からNode.jsと選ぶだけで、.vscodeにlaunch.jsonが出力されるのでそこの設定を少し書き換える(書き換えたのはファイル名くらい)
Debugging in Visual Studio Code
良さ気な設定できたら晒そう……