Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScriptで入門するGenerics / intro-generics-by-typescript

TypeScriptで入門するGenerics / intro-generics-by-typescript

TypeScriptとGenericsを雰囲気でやってるので入門し直しました

Kazuki Higashiguchi
PRO

May 08, 2019
Tweet

More Decks by Kazuki Higashiguchi

Other Decks in Technology

Transcript

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

    View Slide

  2. @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

    View Slide

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

    View Slide

  4. =
    ● 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. =
    ● 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. fin.
    15

    View Slide