天下一alt js武闘会 typescriptの仕様 よくなった事について

15
TYPESCRIPT AltJS 06/08

Upload: s2otsa

Post on 28-May-2015

436 views

Category:

Engineering


3 download

TRANSCRIPT

TYPESCRIPTの仕様よくなった事に

ついて天下一AltJS武闘会

06/08 佐藤慎一郎

佐藤 慎一郎@S2OTSA

Wanoっていう会社で動画の広告サービスを作っています普段PerlでWebを書いていますたまにLuaとか書きます動画のプレーヤーとかをTypeScriptで書いてます

TYPESCRIPTとはMicrosoft製

最近1.0.0.0が出た

C#開発者が作ってる

TypeScriptからJavaScriptを作るコンパイラを提供

JavaScript + クラスベースOO + 静的型付け

TYPESCRIPTで追加された言語仕様

クラスが書ける静的型付け名前空間this巻き込み

クラス宣言ができるように!アクセス修飾子はpublicとprivateのみ

継承ベースのクラス、protectedが欲しい…

class SampleClass extenx SuperClass{

private name : string ;

constructor( name : string , value? : string ) { super(name) }

public setName( name : string) : string { this.name = nane; }

private getName() : string{ return this.name; }

}

動的型付け => 静的型付け型定義

var value : string = "string"

型推論

左辺側に型を書かなくてもいい場合がある

var value = "string" // string型になる

右辺側に型不明な物を入力するとany型になる

any型になるとあらゆるメソッド、プロパティにアクセスしてもエラーにならない=>バグを見つけづらくなる

function func(inputValue){ var value = inputValue // any型}

動的型付け => 静的型付けハッシュでも出来る

var hoge : { id : number ; name : string ;} = { id : 100 , name : "string"};

名前空間var NS = NS || {}NS.TestObject = function(){}

から

module Hoge{ export module Fuga{ export module Piyo{ export class Bar{ constructor(){ } } // exportを書かなければ外からアクセスが出来ない class InnerClass{ constructor(){ } } } }}

みたいに書けるようになった

関数内でのTHISの巻き上げアロー関数式で書くと、関数内でのthisを参照を変えないよ

うに出来る

JAVASCRIPTの場合var self = this;document.getElementById("hoge").addEventLisntner( "click" , <span class="red">function()</span> { alert(<span class="red">self</span>.id);

// 参照が変わってしまうので //selfに拘束しないと正しく参照できない }} , false)

関数内でのTHISの巻き上げアロー関数式で書くと、関数内でのthisを参照を変えないよ

うに出来る

TYPESCRIPTの場合document.getElementById("hoge").addEventLisntner( "click" , <span class="red">() =></span> { alert(<span class="red">this</span>.id);

// 参照が変わらないのでthisのまま }} , false)

外部ファイル参照外部ファイルを参照する様にしておくと、

コンパイル時にまとめて1ファイルにしてくれる

/// <reference path="SomeClass.ts" />/// <reference path="SomeClass/SomeSubClass.ts" />

TYPESCRIPTにして変わった事カジュアルにクラスカジュアルに継承

カジュアルにクラスプライベートクラスも書けるクラスを書く、名前空間を各コストが下がって書くハードルが下がったファイル分割がしやすくなっているのでクラスファイルが増えるのが苦にならない↓明示的にプロパティを書くので、PerlからJSONで変数を受ける時等に変数名、構造の間違い等が減った

カジュアルに継承親クラスのコンストラクタとかメソッドとかを呼ぶのが楽になったprivate関数は便利

ご清聴ありがとうございました。