Slide 1

Slide 1 text

TypeScriptで 入門するGenerics @hgsgtk - Kazuki Higashiguchi 1 #oweb 表参道Web勉強会

Slide 2

Slide 2 text

@hgsgtk Kazuki Higashiguchi job is … Back-end Engineer work with ... PHP, Go, Python, Docker, AWS, TypeScript ...etc motivation of this talk... - 雰囲気でやってるTypeScriptを 理解したい - Go 2 の Genericsについて深遠 な意見を持つ足かせへ 2

Slide 3

Slide 3 text

= 3 Genericsへの興味 Go 2 Generics の Draft https://go.googlesource.com/proposal/+/master/design/go2draft-generics-overview.md

Slide 4

Slide 4 text

= ● TypeScript is a superset of JavaScript that compiles to clean JavaScript output. ○ https://github.com/microsoft/TypeScript ○ 現在、3.4.5 ● Microsoftが作ったJavaScriptのスーパーセット言語 ● 静的型付け言語 ● コンパイル時に型検査 ● tsc でコンパイルして .js へ 4 TypeScript

Slide 5

Slide 5 text

= ● 型引数を使用して、実際に利用されるまで型が確定しない クラス・関数を実現する ● See also: ○ https://www.typescriptlang.org/docs/handbook/generics.html ○ https://typescript-jp.gitbook.io/deep-dive/type-system/generics 5 TypeScript Genericsとは

Slide 6

Slide 6 text

= 6 Hello world Generics in TypeScript Genericsを使わない場合、Any typeで受け付ける選択肢

Slide 7

Slide 7 text

= 7 Hello world Generics in TypeScript Genericsを使う場合、宣言後引数にTをとり、返り値としてT を返す。 たとえば、string 型を渡した場合は string 型の戻り値になる

Slide 8

Slide 8 text

= 8 Generic Constraints Tは length を持っていないので compile error になる

Slide 9

Slide 9 text

= 9 Generic Constraints length を持つinterfaceを定義し extends する Tに制約を与えられる

Slide 10

Slide 10 text

= ● TypeScriptのGenericsに入門した ● 型を抽象的に扱える、制約もつけられる ● コンパイラの力を借りれるのが素敵 ○ TSの any とか、 Goの interface{} とかしなくていいのはいい 10 ここまでのまとめ

Slide 11

Slide 11 text

= ● Go 1.x では Generics はないが、Go 2 にて Generics の Draft が出ている ● Draft にて追加されるとされるのが Type Parameter・Type Argument・Contract ● See also ○ https://go.googlesource.com/proposal/+/master/design/go2draft-ge nerics-overview.md ○ https://go.googlesource.com/proposal/+/master/design/go2draft-co ntracts.md 11 Extra Talk: Go 2 Generics Draft

Slide 12

Slide 12 text

= 12 Extra Talk: Go 2 Type Parameter Type Parameter Type Argument https://go.googlesource.com/proposal/+/master/design/go2draft-contracts.md

Slide 13

Slide 13 text

= 13 Extra Talk: Go 2 Type Parameter TはStringを持っていないので Invalid https://go.googlesource.com/proposal/+/master/design/go2draft-contracts.md

Slide 14

Slide 14 text

= 14 Extra Talk: Go 2 Type Parameter contract によって必要な条件を 表明する https://go.googlesource.com/proposal/+/master/design/go2draft-contracts.md contract を追加する

Slide 15

Slide 15 text

fin. 15