Slide 1

Slide 1 text

TypeScriptはいいぞ (TypeScriptはいいぞ)

Slide 2

Slide 2 text

https://www.itmedia.co.jp/news/articles/2012/07/news146.html

Slide 3

Slide 3 text

こんな人たちに届いて欲しい JavaScriptを知っているけど、TypeScriptは良くわかってない TypeScriptを聞いたことある人 サーバーサイドメインでフロントあんまり興味ない人

Slide 4

Slide 4 text

自己紹介

Slide 5

Slide 5 text

koz (こじ/こず) @kozzzzz4 TOPGATE - 普段はフロント側 - Angular頑張ってます - サクナヒメ(?)やってます

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

こんな経験ありませんか?

Slide 8

Slide 8 text

Uncaught ReferenceError: hoge is not defined

Slide 9

Slide 9 text

Uncaught TypeError: Cannot read property 'fuga' of undefined

Slide 10

Slide 10 text

Uncaught ReferenceError: hoge is not defined

Slide 11

Slide 11 text

TypeScriptって何?

Slide 12

Slide 12 text

JavaScript 型

Slide 13

Slide 13 text

完全に理解した! やったね!

Slide 14

Slide 14 text

TypeScriptはあなたを救います

Slide 15

Slide 15 text

救われる3つの内容 ● 型安全性 (バグが減らせる) ● 開発効率が上がる ● 開発のアプローチが変わる

Slide 16

Slide 16 text

型安全性 型安全性とは、型検査によって不正なプログラムが混入するのを防ぐこと。 つまり、「型安全性 ≒ バグが減る」。

Slide 17

Slide 17 text

開発効率が上がる IDEによるコード補完が効きます。 これもTypeScriptを使用することによる恩恵です。 つまらないタイプミスとはおさらばです。

Slide 18

Slide 18 text

アプローチが変わる 型を考える→ロジックを組む。 JavaScriptを使用していた時ではありえませんでした。 型を意識してコードを書くので、無理やりなコードは産まれにくいです。

Slide 19

Slide 19 text

全然難しくない型

Slide 20

Slide 20 text

(最初は)難しい型は使う必要無し type Pick = { [P in K]: T[P]; };

Slide 21

Slide 21 text

引数の型と戻り値を書くだけ function sum(a: number, b: number): number { return a + b; }

Slide 22

Slide 22 text

インターフェースを定義するだけ interface Person { name: string; age: number; married: boolean; } const person: Person = { name: 'xxx', age: 20, married: false };

Slide 23

Slide 23 text

ね?簡単でしょう?

Slide 24

Slide 24 text

これだけは守って欲しい

Slide 25

Slide 25 text

非any三原則 ※非any三原則(ひanyさんげんそく)とは、「 anyをもたない、つくらない、もちこまない」という三つの原則からな る、日本の国是。[要出典]

Slide 26

Slide 26 text

anyを指定した例 const a: any = 1; const b: any = 'b'; // コンパイラさんが仕事を放棄 const c = a * b;

Slide 27

Slide 27 text

any = コンパイラがエラーをだす仕事を放棄する anyは我々を救わない anyは危険 anyは闇の魔術 メーデー!メーデー!

Slide 28

Slide 28 text

闇の魔術に対する防衛術

Slide 29

Slide 29 text

ソースコードの平和を守ろう // tsconfig.json { "compilerOptions": { "strict": true, } }

Slide 30

Slide 30 text

tsconfig.jsonとは TypeScriptを使用したプロジェクトのルートディレクトリに配置されてるやつ。 コンパイルオプションなどを設定できる。 先ほどの例では、コンパイルオプションで”strict: true”を指定している。 { "compilerOptions": { "strict": true, }

Slide 31

Slide 31 text

strict: true ? “strict: true”は複数のコンパイルオプションが設定される。 特に”noImplicitAny”がまじエクスペクトパトローナム。

Slide 32

Slide 32 text

noImplicitAny ? 暗黙的なanyの混入を防いでくれる。 明示的にanyしているのを発見したら、レビューで弾こう!

Slide 33

Slide 33 text

因みにAngularでやるなら Strict Modeが用意されてます。 ng new [project-name] --stricta Angular用のコンパイルオプションも有効化されます。

Slide 34

Slide 34 text

完全に興味が湧いた後は?

Slide 35

Slide 35 text

まずは触ってみよう! https://www.typescriptlang.org/play

Slide 36

Slide 36 text

調べてみよう! ● 公式サイト(https://www.typescriptlang.org/) ● TypeScript Deep Dive(https://basarat.gitbook.io/typescript/) ● サバイバルTypeScript(https://book.yyts.org/) ● TypeScriptの型入門(https://qiita.com/uhyo/items/e2fdef2d3236b9bfe74a)

Slide 37

Slide 37 text

書籍で学ぼう! https://www.oreilly.co.jp/books/9784873119045/

Slide 38

Slide 38 text

おしまい。