1: 2016-03-08 (火) 14:16:58 njf |
現: 2016-03-08 (火) 23:33:16 njf |
| console.log(labelledObj.label); | | console.log(labelledObj.label); |
| } | | } |
| + | |
| var myObj = {size: 10, label: "Size 10 Object"}; | | var myObj = {size: 10, label: "Size 10 Object"}; |
| printLabel(myObj); | | printLabel(myObj); |
| label: string; | | label: string; |
| } | | } |
| + | |
| すると次からこれを使って型を指定できる。 | | すると次からこれを使って型を指定できる。 |
| | | |
| } | | } |
| | | |
- | この場合、要素の存在を保証するという利点は失われるが、かわりにエディタの補完がきくのと、変換時にエラーが出るのでタイプミスのチェックが可能という利点は残る。 | + | この場合、要素の存在を保証するという利点は失われるが、エディタの補完がきくのと、タイプミスのチェックが可能という利点は残る。 |
| | | |
| *関数型 [#s190ccc2] | | *関数型 [#s190ccc2] |
| } | | } |
| | | |
- | これで2つのstring型の引数を持ち、戻り値がbooleanのInterfaceが定義できる。使うときには以下のようにする。 | + | これで2つのstring型の引数を持ち、戻り値がbooleanの関数のInterfaceが定義できる。使うときには以下のようにする。 |
| | | |
| var myFunc:MyFunction = function(arg1:string,arg2:string):boolean{ | | var myFunc:MyFunction = function(arg1:string,arg2:string):boolean{ |
| } | | } |
| | | |
- | もちろん、Interfaceで指定した引数と戻り値を持たない関数を入れようとするとエラーとなる。 | + | もちろん、Interfaceで指定した引数と戻り値を持たない関数を入れようとするとエラーとなる。引数名は何でもかまわない。 |
| | | |
| *配列型 [#xb366d95] | | *配列型 [#xb366d95] |
| length: number;//stringじゃないのでエラー | | length: number;//stringじゃないのでエラー |
| } | | } |
| + | |
| + | interface Dictionary { |
| + | [index: string]: string; |
| + | length: string;//stringなのでOK |
| + | } |
| + | |
| + | 「[]」でアクセスしたときに矛盾するからと思われる。 |
| | | |
| *クラス型 [#l97b7524] | | *クラス型 [#l97b7524] |
| setTime(d: Date); | | setTime(d: Date); |
| } | | } |
| + | |
| class Clock implements ClockInterface { | | class Clock implements ClockInterface { |
| currentTime: Date; | | currentTime: Date; |
| new (hour: number, minute: number); | | new (hour: number, minute: number); |
| } | | } |
| + | |
| class Clock implements ClockInterface { | | class Clock implements ClockInterface { |
| currentTime: Date; | | currentTime: Date; |
| new (hour: number, minute: number); | | new (hour: number, minute: number); |
| } | | } |
| + | |
| class Clock { | | class Clock { |
| currentTime: Date; | | currentTime: Date; |
| constructor(h: number, m: number) { } | | constructor(h: number, m: number) { } |
| } | | } |
| + | |
| var cs: ClockStatic = Clock; | | var cs: ClockStatic = Clock; |
| var newClock = new cs(7, 30); | | var newClock = new cs(7, 30); |
| | | |
- | こちらはOK。コンストラクタはstaticに属するが、newでチェックするのはインスタンスに属するものなのでエラーが出るらしい。 | + | こちらはOK。コンストラクタはstaticに属するが、newでチェックするのはインスタンスに属するものなのでエラーが出るらしい。わからないときはJavaScriptのコンストラクタの仕組みを思い出すか、そういう物だと思っておけばよい。 |
| | | |
| *Interfaceの継承 [#ee044493] | | *Interfaceの継承 [#ee044493] |
| color: string; | | color: string; |
| } | | } |
| + | |
| interface PenStroke { | | interface PenStroke { |
| penWidth: number; | | penWidth: number; |
| } | | } |
| + | |
| interface Square extends Shape, PenStroke { | | interface Square extends Shape, PenStroke { |
| sideLength: number; | | sideLength: number; |
| } | | } |
| + | |
| var square = <Square>{}; | | var square = <Square>{}; |
| square.color = "blue"; | | square.color = "blue"; |
| reset(): void; | | reset(): void; |
| } | | } |
| + | |
| var c: Counter; | | var c: Counter; |
| c(10);//関数型として | | c(10);//関数型として |
| c.reset();//クラス型としてメソッド呼び出し | | c.reset();//クラス型としてメソッド呼び出し |
| c.interval = 5.0;//プロパティ | | c.interval = 5.0;//プロパティ |
| + | |
| + | クラスで良いし、理解しづらいのであまり使われなさそうな気がするが実際どうかは知らない。 |