Open8

TSKaigi 2024 After Talk参加メモ

iwamasaiwamasa

TSKaigiで話しきれなかった事

Helpfeel株式会社 teramotodaikiさん

資料
https://docs.google.com/presentation/d/1z1ouyBtsNFgdJysGLAKyJXgt4pEHDN3kD555Mh2UiR0/edit#slide=id.g28f41076fda_0_0

どうやってJSからTSに移り変わっていったか?

2019年→2024年までにはほぼTSに書き換えた

TS化を成功するためのポイント

  1. TSを書ける優秀な人材を獲得すること
  2. 協力的なチーム
  3. 導入推進

JS→TSの難しさ

  • デグレが起きるリスク
  • 間違った型をつけるリスク
  • レビューが大変

JSDocで型を書き込むアプローチが効果的

@ts-expect-error で逃げる
→一旦下の型エラーを無視することができる

iwamasaiwamasa

デッドコード撲滅のためにエンドポイントの棚卸し機能を作った話 〜ESLintカスタムルールとtypescript-estree利用のすすめ〜

Cloudbase株式会社 tarao1006さん

話すこと

  • ESLintのカスタムルールの一例

https://zenn.dev/cloudbase/articles/list-endpoints

呼び出されていないエンドポイントは無いか?
→V2を追加した時にV1を消し忘れた

最終的にGitHub Actionsで拾えるようにした

urlcatを導入
https://www.npmjs.com/package/urlcat
→使ってくれない人がいたので強制化ルールを型で縛った

型で縛りきれないのならESLintで縛ろう!

iwamasaiwamasa

TypeScriptを活用したi18n化 <スプシの翻訳情報を用いた型付けと段階的i18n化に対応したカスタムESLint>

株式会社LayerX minako-phさん

Nuxt.jsを使っていて、 @nuxt/i18nに型を当てたお話

スプシで管理している翻訳情報を読み取るアプローチについて
i18nは他のアプリでも使うような想定

pnpmのpatch→これ初めて聞いた
https://pnpm.io/ja/cli/patch

iwamasaiwamasa

Effectで作る堅牢でスケーラブルなAPIゲートウェイ(拡大版)

株式会社EARTHBRAIN yasaichiさん

Effect: TSのライブラリ
これかな?
https://effect.website/

なぜEffectを使ったか?
→APIゲートウェイを実装する時の課題解決(メモ取れなかった)
堅牢性とスケーラビリティに対するアプローチ?

iwamasaiwamasa

社内 TSKaigi 実施を経た Full Stack TypeScript 強化の道

アセンド株式会社 niwa_takeruさん

Full Stack TSの恩恵

  • 1エンジニアのフルスタック化
  • プロダクトエンジニアへの進化

モノレポでプロダクトを管理している

課題点

  • 次世代ライブラリへの移行
    • express→nest, hono
  • よりTSを活かした関数型DDDへ

やっていること

  • ValidationをZodに変更
  • classからの脱却
  • Result型の導入

社内カンファレンスはいいぞ!!

iwamasaiwamasa

ここからLT

Full TypeScriptな構成を支えるRemixの実態

mackayさん

https://speakerdeck.com/mackay_1503/full-typescriptnagou-cheng-wozhi-eruremixnoshi-tai

Remix触ってみたくなった!

TSKaigi で Type<Challenge[]> を配ってみた

RyoFujita9さん

https://zenn.dev/rryyoooo/books/5e730fdbe42173

組み込み型から学ぶUnion Distributionの活用法

suke083さん

react-hook-forms内での活用事例

  • HasKey型
  • UnionToIntersection型

個別リポジトリからフルTypeScriptのモノレポ(Nx)に移行した話

mok_oshiさん

https://nx.dev/getting-started/intro

移行してみて

  • 開発者体験が良くなった
  • 少しずつ共通コードを切り出してモジュール化している
  • tRPC導入できた!