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

Temporal - TypeScript 6.0で始める新しい日時API

Avatar for karukan029 karukan029
June 10, 2026
330

Temporal - TypeScript 6.0で始める新しい日時API

Avatar for karukan029

karukan029

June 10, 2026

Transcript

  1. © Findy Inc. 2026.06.10 TSKaigi Night talks 〜after conference〜 Temporal

    - TypeScript 6.0で始める 新しい⽇時API 1 甲斐 和基 ファインディ株式会社 フロントエンドエンジニア @karukan029
  2. © Findy Inc. 3 2026年のTemporal周りの動き • 2⽉ ◦ TypeScript 6.0

    Betaで組み込み型としてTemporalが追加 ◦ https://devblogs.microsoft.com/typescript/announcing-typescri pt-6-0-beta/#new-types-for-temporal • 3⽉ ◦ Temporal がTC39 Process Stage 4に追加 ◦ https://github.com/tc39/agendas/blob/main/2026/03.md • 5⽉ ◦ Node.js v26リリース、実験的フラグなしでTemporalが使⽤可能に ◦ https://nodejs.org/ja/blog/release/v26.0.0
  3. © Findy Inc. 6 Date APIの課題 • ミュータブルなメソッドを持ち、意図しない変更を発⽣させるリスクが ⾼い •

    ⽉が0始まりで分かりづらい • ローカルのタイムゾーンとUTC以外のタイムゾーンをサポートしていな い • パースの挙動が予測しづらい ◦ パースに失敗してもエラーをthrowせず、Invalid Date という値を返 す ◦ ⽇付⽂字列のフォーマットでタイムゾーンを解釈される • グレゴリオ暦のみのサポート
  4. © Findy Inc. 7 Temporalでどのように解決されたか • イミュータブルなメソッドを持ち、 すべてのメソッドが新しいオブジェ クトを返すため、意図しない変更を発⽣させるリスクが低い ◦

    簡単な⽇時の計算ロジックはTemporalで完結できる部分も増えた • ⽉が1始まりで分かりやすい • 任意のタイムゾーン情報を持たせることが可能 • パースの仕様が厳密 ◦ パースに失敗するとエラーをthrowする ◦ Temporalは(PlainDate/Instant/ZonedDateTimeなど)でタイム ゾーンの有無やデータの構造を明⽰的に区別 • グレゴリオ暦以外の暦をサポート
  5. © Findy Inc. 8 Temporalの構造 • ZonedDateTime … タイムゾーンと暦を持つ •

    Instant … タイムスタンプ • PlainDateTime … タイムゾーンを持たない⽇付と時刻 • PlainDate / PlainTime … ⽇付だけ / 時刻だけ • PlainYearMonth/ PlainMonthDay … 年⽉だけ / ⽉⽇だけ • Duration … 2つの時点間の差分
  6. © Findy Inc. 11 Temporalでどのように解決されたか • イミュータブルなメソッドを持ち、 すべてのメソッドが新しいオブジェ クトを返すため、意図しない変更を発⽣させるリスクが低い ◦

    いくつかメソッドも追加されており、簡単な⽇時の計算ロジックは Temporalで完結できるように • ⽉が1始まりで分かりやすい • 任意のタイムゾーン情報を持たせることが可能 • パースの仕様が厳密 ◦ パースに失敗するとエラーをthrowする ◦ Temporalは(PlainDate/Instant/ZonedDateTimeなど)でタイム ゾーンの有無やデータの構造を明⽰的に区別 • グレゴリオ暦以外の暦をサポート
  7. © Findy Inc. 15 Temporalのサポート状況 • ブラウザ:Chrome / Edge /

    Firefox ✅ Safari ⚠ • JavaScriptランタイム:Node.js / Deno ✅ Bun ❌ ◦ Node.js は v24(LTS)では実験的フラグ付き、v26で完全サポート • 本番投⼊にはまだポリフィルが必要 ◦ https://github.com/js-temporal/temporal-polyfill ◦ https://github.com/fullcalendar/temporal-polyfill ◦ https://github.com/fabon-f/temporal-polyfill-lite
  8. © Findy Inc. 17 まとめ • TemporalはDateの課題を解決し、Dateを置き換えるものとして設計さ れた新しい⽇時 API •

    ⽇時操作ライブラリを完全に置き換えるものではない ◦ 単純な⽐較や計算ロジックは代替できるが、より複雑な⽇時操作の ユーティリティとして活⽤するメリットは残る • まだ未サポートの環境があるため、本番導⼊時はポリフィルを使う ◦ Stage 4なので、近いうちにサポートされる可能性は⾼そう?
  9. © Findy Inc. 18 もっと詳しく知りたい⽅へ • https://tc39.es/proposal-temporal/docs/ja/index.html • https://tc39.es/proposal-temporal/docs/cookbook.html •

    https://github.com/tc39/proposal-temporal • https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Gl obal_Objects/Temporal