TypeScriptの注目の型関連issue

TypeScript Advent Calendarの4日目。

TypeScriptのロードマップを見てもES6対応以外は "Investigate top-rated feature requests" とか書いてあるぐらいで、GitHub Issuesのコメントのやりとりを見ていても割りと流動的に良い提案があったら取り入れる感じで開発を進めている印象。

ということで、GitHub Issuesからおもしろそうなものをいくつか拾って紹介してみる。

続きを読む

そろそろCSP Lv.2 nonceやろう

tl;dr

  • CSP Lv.2のnonceを使うと意外と簡単にCSPの恩恵を受けれるよ
  • Firefoxはunsafe-inlineとの挙動がおかしいので注意
  • サンプル実装としてExpressで簡単にnonce対応できるconnectプラグインを書いた(デモあり)
  • Violation Reportもブラウザによって細かい挙動の差異があるよ
続きを読む

3分で分かるFacebook Flow

というか3分ぐらいの情報しかまだ出てきてないんだけど。

先月の@Scale 2014で発表されたFacebookのFlowについて、おそらく唯一のオフィシャルな情報であるこの発表動画を見て分かったことを紹介(ざっと見ただけなので間違ってたらごめんなさい)。

続きを読む

Mac/iOS Safariでバックスラッシュを円記号として表示する方法

Unicodeではバックスラッシュ*1と定義されているU+005Cだが、歴史的な背景によりMS系日本語フォントでは円記号が割り当てられているのはよく知られた話。

ところがMac/iOSに載っているヒラギノ角ゴシック等ではU+005Cはバックスラッシュとして表示されるし、キーボードの右上の円記号キーを打つとU+005CではなくU+00A5 Yen Signが入力される*2

*1:いまはBACKSLASHではなくREVERSE SOLIDUSが正式名称

*2:ことえりの設定で変更は可能

続きを読む

TypeScriptで複数ファイル構成する2つの方法

TypeScriptで複数ファイル構成のプロジェクトを扱う方法について書いてみる。日本語の入門記事や試してみました系の記事で勘違いされてることがたまに見受けられるので、整理してみる。

公式のModules in TypeScriptを既に読んでおられるような御仁は回れ右していただいても結構です。

続きを読む

TypeScriptの宣言空間とその不満

最近TypeScriptの型を触っていてハマったあたりのまとめ。だいたい仕様書に書いてあるとおりなので、すでに仕様書を読破している諸兄にはこの記事は必要ないです。

宣言空間 (declaration space) とは

宣言空間というのは、同一宣言空間で同じ名前が複数存在するとエラーになるような空間のこと。 TypeScriptには大きく分けて3つの宣言空間 (declaration space) がある *1

  1. 変数 (for variables) またはメンバー (for members)*2*3
  2. 型 (for named types)
  3. 名前空間 (for namespaces)

どういうことかというと、TypeScriptでは次のコードがエラーにならない。

var M = 0; // 変数宣言空間
interface M {} // 型宣言空間
module M {} // 名前空間宣言空間

変数とinterfaceとmoduleは別々の宣言空間に宣言されるためコンフリクトしない。

*1:詳細はSpecification 2.3 Declarationsを参照

*2:このグループは仕様書ではまとめられていない(と思う)けど、自分の理解としては型と名前空間とは違うそれ以外のJavaScript空間に存在する宣言空間としてひとまとめにした。

*3:クラスのメンバーにはinstanceメンバーとstaticメンバーがある。

続きを読む