TypeScript meetup #3に参加してきた

これは

2019/10/02(水)に行われたTypeScript meetup #3に参加した時のメモと感想記事です。
資料などは後から追加します。

イベントページ

typescript-jp.connpass.com

会場:株式会社メルペイ様 ハッシュタグ:#tsjp
sli.do:#TSJP3

講演内容(※敬称略)

メルペイのTypsScript活用 株式会社メルペイ(@naughtldy)

講演内容:
メルペイでのTypeScriptの運用と活用について

資料:
drive.google.com

メモ:
・Nuxt.js + TypeScriptで運用
・共通化のためにpackageとして開発
・Nuxt.js初期の頃からTypeScriptでやってきた
・ヒューマンエラー、型安全、APIでの型安全
・protocol buffers APIの定義に使っている
・protoという共通認識をフロント・バックエンドで確認してTSに変換していく
・gRPCをプロトコルとして使用
・要件・機能を作りたいからフロント・バックエンドエンジニアがAPI仕様を決める
・Vue→TSだと型がわからなくなる

講演時に自分が参照したリンクたち
GitHub - naughtLdy/sandbox-typescript-meetup3: TypeScript meetup #3

安全性の極北から見るTypeScript @uhyo_

資料:
speakerdeck.com

講演内容:
 TypeScriptの安全性をどう手に入れるか

メモ:
・TSを使う理由:安全性・開発効率
・安全性を調節可能
・安全性を高めると開発コスト、学習コストも高い
・型コスパを考えて、バランスを考える
・安全性から見たTSの健全性は穴が多い
・気軽に嘘がつける(any as)
・安全性を守るには「嘘をつかない」
・any型は存在が嘘かつ伝染する
・any汚染という概念
・asも危ない
・DOMは型と相性が悪い
・asによる型キャストをハンドリングする際に使うと良い
・anyを使った時点でそのスコープは汚染されている
・正しい方向に型を修正するために使う
・安全性を守る方法として
 →嘘による汚染範囲を狭くする=人間が責任を持つ範囲を狭くする
・変数に嘘を保存しない・関数のインターでーすで嘘をつかない
・責任を最小にしつつ安全性を得るために
 「嘘による汚染範囲を狭くする そもそも嘘はなるべく避ける」

講演時に自分が参照したリンクたち
TypeScriptのunsafeな操作まとめ - Qiita

敗北者のTypeScript - Qiita

TypeScript 3.7の`asserts x is T`型はどのように危険なのか - Qiita

TypeScriptのaddEventListenerで苦しんだところまとめ - Qiita

プロダクト開発とTypeScript @brn227

資料:
speakerdeck.com

講演内容:
TSを導入して生産性は上がったのか?安全性をあげるにはどうしたら良いか?

メモ:
JavaScriptではないがJavaScript
・nolmplicitAnyとStrictはオンにすること
enumは便利だが関数の中でちゃんとチェックする
・Null or undefinedは使い分けしないほうがいい
・strictNullCheckはONにすべきだがundefinedをチェックはしない
・namespaceを使う必要はない
・TSは仮想の肩を持つ言語ですよ
APIサーバとの境界・ブラウザストレージとの境界でエラーが出やすい(嘘が入る)
・External Interface<Adapter>
・クリーンアーキテクチャ
・何れにせよ正しい型と正しくない型の境界線を理解しておくことが大事
・外部協会から型をつけていく
・ifのなかで関数の初期化をしない
・シンプルに型がつけられるコード=人間にも優しい

講演時に自分が参照したリンクたち
Intent to stop using `null` in my JS code · Issue #7 · sindresorhus/meta · GitHub

Clean Architectureは全てのプログラマにお奨めしたい良著|erukiti|note

TypeScript製ライブラリと開発体験 @Akito0107

資料:
akito0107.github.io

講演内容:
TypeScriptの型推論を活用すると、どういったAPIが実現できるか

メモ:
・型パズル
・TypeScript+VSCodeによる圧倒的なDX
・かつてあった存在commander.js
・tree shakingとメソッドチェーン
・引数が想定される分だけ型定義を用意したほうが推論するにも良さそう
・ramda/Rxjs

講演時に自分が参照したリンクたち
"型パズル"との付き合い方

GitHub - akito0107/catacli

commander - npm

「超」TypeScript 向けコマンドラインパーサ marron-glace の紹介

GitHub - hiroppy/fusuma: ✍️Fusuma makes slides with Markdown easily.

reselect/index.d.ts at master · reduxjs/reselect · GitHub

GitHub - pirix-gh/ts-toolbelt: 👷 All the types you need for TypeScript

そのほか

Scalaの経験がTypeScriptに生きるという話を見たけどどう生きてくるのか気になった
・TypeScriptは安全性が高いという触れ込みだけれども、安全性を担保するには使う側の調整が必要
・anyを使わないのが正しいのか使うのが正しいのかはよく検討して理解したい
・型パズルは避けたほうが良いのでは
・次回開催は12月の中頃を予定
・TSConf JP 2020を開催する

www.tsconf.jp