WebStormでTypeScript開発時に"Accessors are only when targeting EcmaScript5 and higher."とコンパイルエラー

アクセサ書いたらコンパイルエラーに。

f:id:yuichi_katahira:20140506005821p:plain

error TS1056: Accessors are only available when targeting ECMAScript 5 and higher.

アクセサはECMAScript 5のObject.definePropertyを使ってるからと。
Preferences -> Project Settings -> File Watchersでtypescriptを選んで編集。
--target ES5をArgumentsに追加でOK。

f:id:yuichi_katahira:20140506012302p:plain

これだと、新しいプロジェクトごとにFile Watcherに設定しないといけないからグローバルな設定が欲しいなあ。
Template Project SettingsにはFile Watcherの項目存在しないから、多分グローバルな設定出来ないと思うんだけど。

参考

WebStormでAIRのDescriptorファイルをテンプレート登録する

AIRのXMLスキーマを登録するやつ書いてて思い出しました。

AIRのDescriptorファイルをサンプルから毎回コピったりするの面倒だったので、テンプレート登録してました。

こんな感じです。


設定を開いてIDE Settings→File Templates

+をクリックして

Nameにテンプレートの名前、Extensionに拡張子、右側に雛形をコピります。
XMLスキーマがあったのと同じ SDKディレクトリ/templates/air下にあるdescriptor-sample.xmlや、
SDKディレクトリ/samples/descriptor-sample.xmlあたりを使うといいです。

WebStormでローカルに保存したXMLスキーマやDTDを参照させる


id:masanobuimai さんがツイートしてたのでAIRXMLスキーマを登録してみました。

プロジェクトのデフォルト設定にしておきたいので、プロジェクト開いてない状態で設定開いてTemplate Project Settings→Schemas and DTDsと選択


+をクリックして



URIを入力して、Pathには、AIR SDKにあるXMLスキーマを指定します。
ちなみにAIR3.1のDescriptorにしてみました。
ダウンロードしてきたSDKでも、Adobe Flash Builderに含まれているものの場合でも、SDKディレクトリ内のtemplates/air下にあります。


URI登録されてないよって怒られてignoreにしてたんですが、これでIgnoreにしなくてすみますね。


追記:masanobuimaiさんからコメントもらいました。ありがとうございます。

ignoreする?と一緒にfetchするとローカルから登録する?が候補にあがったと思うけど。

その時にfetchをやったのかどうか覚えてないので、登録されたXMLスキーマを外して確認してみました。

Template Project Settings→Schemas and DTDsで登録したスキーマのProjectにチェックを入れて・・

項目にありますね。fetchしてみます。

errorになりました。

やってみて思い出しましたが、fetchがerrorになったので諦めてignoreにしたのでした。
ローカルから登録は、項目名がManualy Setup External Resourceだったので、勝手に手打ちするのかなと思い込み、面倒くさいとスルーしました。
記憶力が大分鶏頭。

WebStormで補完候補書くときの参考にするため、予め用意されているJavaScriptファイルをjarから取り出す

タイトルで内容を書ききった件。

WebStormで独自のコード補完候補を定義するとき、どんなふうに書けばいいのかは、最初からWebStormで定義されている、JavaScriptやDOMのネイティブメソッドの補完ファイルを参考にしてます。


しかし、定義にジャンプしてファイルを開いたときに、時折例のビーチボールが延々回り続けて強制終了しなければいけない羽目になることが。
ただ参考にしたいだけなので、WebStormからではなく、Vim等で開いて別途参照することにしようということで、これらのファイルがどこにあるのか調べてみました。


結論からいうと以下にありました。

/Applications/WebStorm 3.0.3.app/plugins/JavaScriptLanguage/lib/JavascriptLanguage.jar

アプリのディレクトリ名は、入っているバージョンで適宜読み替えてください。


このjarファイルを適当な位置にコピって解凍すると、以下のディレクトリに目的のファイル群が入ってます。

com/intellij/lang/javascript/index/predefined


後は必要に応じてお好きなエディタで開いて参考にしましょう。


そろそろWebStormタグを作成してもいいかも→作成しました。

WebStorm:追加した独自のコード補完候補をプロジェクトで使用可能にする

これの続きです。

追記:カスタムのコード補完候補もプロジェクトのデフォルトに設定出来るやり方を下に追加しました。thanks id:masanobuimai !


前回カスタムのコード補完候補を登録して使えるようにしたつもりだったのですが、実は勘違いしていて、それだけでは、自分の意図したようには使えてなかったので補足。

何を勘違いしていたかというと、勝手に全てのプロジェクトで補完候補が使用可能になるのかと思っていました。
が、実際にはちゃんと明示的にセットしてやらないと補完候補に出ないです。


こんな感じに各プロジェクトのProject Settings→JavaScript Libraries→Usage Scopeでプロジェクト全体に追加するなり、各ファイルでセットしてやります。
Scopeとなっているとおり、プロジェクト、ディレクトリ、ファイル単位でセット出来るようになっています。
カスタムの補完候補は、新しくプロジェクトを作成してもセットされていないので、プロジェクト作成時に最初にやっておくといいでしょう。


なぜ勘違いしてたかというとProject SettingsのJavaScript Librariesで見たときに、カスタムで追加したやつはTypeがGlobalとかいうのになっていたので、全部のプロジェクトで勝手に使えるようになると思い込んじゃってました。Globalってそういう意味じゃなかったのか。

ちなみに登録した時に作業してたプロジェクトでは、カスタムの補完を作成して登録した後、コード補完したい各ファイルで右クリックのコンテキストメニューから、候補をとりあえず追加してました。

これは、先ほどの設定画面でいうと、一つ一つのファイルに個別に使う補完候補を追加しているのと同じ作業になります。


細かく制御は出来るけど自前でセットしてねというのがIntelliJっぽいというやつですかね。


追記:masanobuimaiさんにプロジェクトのデフォルト設定の仕方を教えてもらいました。
コメントからの引用

WebStormのSettingsがどんなかちゃんとは知らないんだけど、IntelliJはプロジェクト開いてない状態でSettings設定するとProjectのデフォルト設定ができるよ。WebStormも同じ事できない?

プロジェクト開いてない状態で設定開いたらTemplate Project Settingsに。ここでJavaScript Libraries→Usage Scopeと開いて設定してやればデフォルト設定出来ます。自動で出来ないとかいってすんません。