並び順

ブックマーク数

期間指定

  • から
  • まで

241 - 280 件 / 512件

新着順 人気順

TypeScriptの検索結果241 - 280 件 / 512件

  • Yup to Zod ~スキーマバリデーションライブラリの移行~ - Sansan Tech Blog

    Contract One Dev グループの井上です。本年もどうぞよろしくお願い申し上げます。 私たちのチームでは、先日、「Contract One Cheat Day」と銘打って社内ハッカソンを開催しました。 社内ハッカソンの内容については、社内ハッカソンを開催したら、止まっていた改善が色々進んだ話: Contract One Cheat Day - Sansan Tech Blogをご覧ください。 本記事では、そんな社内ハッカソンにおける取り組みの一つ、”Zod導入”について書いていきます。 Zodの導入について Yupでいいんじゃない? Zodとは、TypeScriptファーストのスキーマバリデーションライブラリです。類似のライブラリとしては、以前から広く使われているYupが挙げられます。Contract Oneでも、これまでYupを採用してきました。 Zodは比較的新しいライブラリ

      Yup to Zod ~スキーマバリデーションライブラリの移行~ - Sansan Tech Blog
    • TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで | ドクセル

      TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで スライド概要 TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで TsKaigi 2025 DAY2 / 10:50 〜 11:20 (レバレジーズトラック)

        TypeScriptとVercel AI SDKで実現するLLMアプリケーション開発:フロントエンドからバックエンド、そしてChrome拡張まで | ドクセル
      • 文字列は実質Any問題に対するKotlinのアプローチ 〜TypeScriptのBranded Typesを添えて〜

        文字列は実質Any 例えば従業員IDを管理するemp_123456_idと部署IDを管理するdep_123456_idがあるとします。 これを文字列として扱った場合、コードとしては以下のようになります。

          文字列は実質Any問題に対するKotlinのアプローチ 〜TypeScriptのBranded Typesを添えて〜
        • TSKaigi Kansai 2024 - 構造的部分型と serialize 境界

          一休レストランで Next.js App Router から Remix に乗り換えた話 / Migration from Next.js App Router to Remix

            TSKaigi Kansai 2024 - 構造的部分型と serialize 境界
          • TypeScriptにおける日付フォーマットの個人的ベストプラクティス

            import { formatDate } from './dateUtil.ts' const text = formatDate(new Date(), 'YYYY年M月D日(曜)'); console.log(text); // 2024年11月9日(土) 日付フォーマットはJavaScript標準のtoLocaleDateStringを使っています。 関数のオーバーロードを使うことで、フォーマットごとの説明をIDE上で表示させています。 フォーマット文字列はdayjsを参考にしています。 プレイグラウンド ↓で実際にVSCodeのインテリセンスが動くのでぜひ試してみて下さい。 長所短所 この方式の長所・短所を↓にまとめてみました。 個人的には1つのアプリで使うフォーマットが数パターンに収まる場合、長所の方が勝つんじゃないかと考えています。 長所 IDEの補完が便利 アプリケーション

              TypeScriptにおける日付フォーマットの個人的ベストプラクティス
            • 【実験】 Google OAuth2 付きMCPサーバーを作って、Claude Desktopから呼んでみる(Cloudflare)

              はじめに LLMと外部データソースを統合する際、ツールの認証をどうするのか悩みます。たとえば、MyGPTsのActionsではOAuth 2.0による認証[1]が実装されています。 MyGPTsではこのようにOAuth設定が可能 これは結構便利で、Google Apps Scriptを作り、組織内ユーザーにアクセスを限定した形でデプロイすれば、スプレッドシートやGmailとのセキュアな連携が、認証フロー含めてMyGPTs上で完結します。 Apps Scriptは呼び出し元を制限できる。呼び出しにはOAuth2が必要。 一方でClaude Desktopも使えるGoogle Workspace連携MCPサーバーの作例を見ると、APIキー認証のものか、手元で認証フローを走らせるもので、Claude Desktop上で認証・認可できるものは管見の限りありません。 この記事は、Claude Des

                【実験】 Google OAuth2 付きMCPサーバーを作って、Claude Desktopから呼んでみる(Cloudflare)
              • 【図解解説/初心者OK】Next.js不要?進化したReact Routerで技術記事アプリを作るチュートリアル【TypeScript/TailwindCSS】 - Qiita

                はじめに みなさんこんにちは、Watanabe Jin(@Sicut_study)です。 Reactが大好きな私にとってReactの歴史が大きく変わる瞬間に出くわしました。 ついにReact 19が安定版としてリリースされたのです。 React19になってSSRなどサーバーコンポーネントが完全にサポートされます。 そんな中で真っ先に動いたのがRemixです。 Reactでサーバーでの処理ができるとなると「React + React Router」と「React + Remix + React Router」で実現できることの差がなくなりました。 そこでReact RouterとRemixが統合されて新たなフレームワークが生まれます。 それが「React Router v7」なのです!!! React Router v7はいままで通りライブラリとして「ReactRouter」を利用することも

                • ソースコードを解析して社内向けUIライブラリの使用状況を自動で集計する

                  Yuhei Yasudaデザインエンジニア。2023年入社。Developer Experience & Performanceチーム所属。

                    ソースコードを解析して社内向けUIライブラリの使用状況を自動で集計する
                  • TypeScript で AI エージェントを構築する VoltAgent

                    TypeScript で AI エージェントを構築する VoltAgent VoltAgent は TypeScript で AI を活用したアプリケーションを構築するためのツールキットです。VoltAgent Console を使用すると、エージェントの状態をリアルタイムで確認したり、エージェントのワークフローを可視化できる点が特徴です。 音声による概要 この音声概要は AI によって生成されており、誤りを含む可能性があります。 VoltAgent は TypeScript で AI を活用したアプリケーションを構築するためのツールキットです。構築した AI エージェントの監視やデバッグを行うためのツールとして VoltAgent Console が提供されている点も特徴です。このツールを使用すると、エージェントの状態をリアルタイムで確認したり、エージェントのワークフローを可視化したりで

                      TypeScript で AI エージェントを構築する VoltAgent
                    • Build a gameplay experience with TypeScript

                      This leverages a starter sample available from https://github.com/microsoft/minecraft-scripting-samples/ with a simple build process and TypeScript compilation for Minecraft. From it, you can build out and expand simple gameplay styles. You can also use this project as a starter for your own scripting projects. Important Just getting started with JavaScript? You may want to check out the Scripting

                        Build a gameplay experience with TypeScript
                      • エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方

                        このデックでは、エラーレスポンス設計から考える、プロダクトの0→1開発におけるGraphQLへの向き合い方について紹介します。 記事: 【技術選定】 0→1 の SaaS に…

                          エラーレスポンス設計から考える、0→1開発におけるGraphQLへの向き合い方
                        • 僕が思い描くTypeScriptの未来を勝手に先取りする

                          Web Developer Conference 2024 https://web-study.connpass.com/event/321711/

                            僕が思い描くTypeScriptの未来を勝手に先取りする
                          • NoInfer<T>の活用例見つけた - Qiita

                            こんにちは。この記事は株式会社カオナビ Advent Calendar 2024の3日目の記事です。 NoInfer<T> 皆さんは、TypeScriptの機能であるNoInfer<T>をご存知でしょうか。これはTypeScript 5.4から追加された新機能であり、おおよそ次のようなものです。 型としてはNoInfer<T>はTと同じだが、型推論に違いがある。 NoInfer<T>のT部分に型変数が含まれている場合でも、T部分は型推論に使われない。 NoInfer<T>は主にジェネリック関数の引数の型として使われる。 TypeScript 5.4のリリースノートではNoInfer<T>の例として次のようなものが紹介されていましたので、改めて解説します。 function createStreetLight<C extends string>(colors: C[], defaultCol

                            • "良い"TypeScriptを書くためのマインドセット

                              [Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails

                                "良い"TypeScriptを書くためのマインドセット
                              • Mastraのサンプル集を一気に紹介する|yoshi8

                                こんにちは!吉波です! 最近、AIエージェントフレームワーク「Mastra」が彗星の如く現れました。衝撃的だったのが、こちらの画像↓ 「LangChainのGithubスター数を抜き去った…!?」 これを見た時、衝撃が走りました。LLMを用いたアプリケーション開発を効率的に行うためのライブラリとして、長らく君臨してきたLangChainが抜かされたという事実は、全世界が驚いたはずです。 そこで今回は、これからMastraを触ってみたいと思う方に向けて、Mastra公式が出しているサンプル集を紹介します!AIエージェントの作り方を学びたいなと思っている方はぜひ最後までご覧ください! また、今日から「吉波塾」というAI駆動開発やAIエージェントに関する講義を開始したので、そちらも良ければご参加ください!☺️ 次回の開催はX(@yoshi8__)より共有します! Mastraのサンプル集今回の記

                                  Mastraのサンプル集を一気に紹介する|yoshi8
                                • TypeScriptの不要なexportを自動で削除するOSS「ts-remove-unused」を開発しました

                                  こんにちは。メディアカンパニーに所属する鴻巣和司 (@kazushikonosu) です。普段はLINEスキマニのフロントエンドの開発をしています。業務をきっかけに、TypeScriptの不要なデッドコードを自動で削除するツール ts-remove-unused を開発し、GitHub上でOSSとして公開しました。本稿では、ts-remove-unusedが解決しようとしている問題や直近で行った大規模な変更について紹介します。 exportしていることで気づきにくい不要なコード TypeScriptを使っている場合、tsconfig.json の compilerOptions.noUnusedLocals を有効にすることで、ファイル内で参照がない不要な変数などの定義をTypeScriptコンパイラの実行時に検知することが可能です。また、ESLintなどの静的解析ツールを使い適切にルール

                                    TypeScriptの不要なexportを自動で削除するOSS「ts-remove-unused」を開発しました
                                  • 最強のクエリビルダ「kysely」の紹介 ~薄いORMを探して~

                                    はじめに こんにちは、畑田です。 最近、RDBを使用しているプロダクトをリプレイスする機会がありました。 このプロジェクトの目標は今現在の使用や実装方針をできるだけそのままに、インフラと技術だけをリプレイスするというものでした。 もちろん、インフラや技術を刷新するということはその上に乗るアプリケーションの実装にも必ず影響を及ぼします。その中で出来るだけ現状の仕様に寄せる試みを行いました。 元のプロジェクトはPHPで書かれており、DBのへの通信においても、文字列とsprintfなどを使用し、生のSQLを書いてpg_queryで実行していました。 私はこれを再現する最も安全な方法を探しました。 Prismaなどを用いたactive record形式のORMを使用するより、SQLに近い書き味のクエリビルダーを求めてkyselyに辿り着きました。 あまり情報が第三者からの情報が出てきていないように

                                      最強のクエリビルダ「kysely」の紹介 ~薄いORMを探して~
                                    • フォームライブラリの新たな選択肢 - TanStack Form

                                      はじめに みなさん、フォームライブラリは何を使っていますか? React Hook Formがフォームの一時代を築いた後に、server actionに対応しているConformが登場したり、様々なフォームライブラリがあると思いますが、今回は最近v1になったTanStack Formについてご紹介します。 TanStack Formは、各入力フィールドを独立したコンポーネントとして提供します。これにより、フォーム全体を再描画するのではなく、変更が生じた特定のフィールドのみを選択的に再レンダリングすることが可能となり、パフォーマンスの最適化を実現しています。 TanStack Formの推しポイント👍 まずは、TanStack Formの推しポイントをいくつかご紹介します。 強力な型サポート TanStack系のライブラリ全般の特徴になりますが、TypeScriptでできているため型安全・

                                        フォームライブラリの新たな選択肢 - TanStack Form
                                      • node v22.7.x で TypeScript をそのまま実行する

                                        node の最新に近いバージョンで TypeScript の実験的なサポートが入っている。ts-node や tsx に頼らず typescript のスクリプトを実行できる。 ロードマップ 実験的な機能であることは承知の上で、動かしてみる。 tl;dr # ~/.zshrc alias nodets="node --experimental-strip-types --experimental-transform-types --experimental-detect-module --no-warnings=ExperimentalWarning" # run nodets run.ts

                                          node v22.7.x で TypeScript をそのまま実行する
                                        • Branded Typeから小さく始める型安全なエラーハンドリング - カミナシ エンジニアブログ

                                          はじめに TypeScriptで開発していると、エラーハンドリングの難しさに直面することがあります。 定番のResult型やEither型などの素晴らしいアプローチもありますが、これらは導入コストが高く、チーム全体に浸透させるのが難しいこともあるでしょう。 本記事では、小さく始められてチームに浸透させやすい、Branded Typeを使って型安全なエラーハンドリングを実現する方法を紹介します。 自己紹介 カミナシ StatHackカンパニーの かわりくです! 普段は食品表示ラベルをAIで検査するプロダクトを開発しています! kaminashi.jp note.kaminashi.jp TypeScriptの例外処理の問題点 1. catchブロックのerrorはunknown型になる const invalidJson = '{"name": "John",}'; try { const

                                            Branded Typeから小さく始める型安全なエラーハンドリング - カミナシ エンジニアブログ
                                          • v0 の SDK を試してみる

                                            v0 は Vercel が開発した AI ベースの Web アプリケーション・UI 生成ツールです。v0 のプラットフォーム API を使用すると、v0 の機能を自身のコードから利用できます。この記事では v0 TypeScript SDK を使用して、v0 のプラットフォーム API を試してみます。 v0 は Vercel が開発した AI ベースの Web アプリケーション・UI 生成ツールです。 自然言語でアプリケーションの要件を v0 に伝えることで React, Next.js, Tailwind CSS を使用した Web アプリケーションのコードを自動生成します。生成したコードは Web ブラウザ上で実行でき、さらにワンクリックで Vercel 上のインフラストラクチャにデプロイが可能です。デザインのモックアップやプロトタイプを迅速に作成するためのツールとして非常に便利です

                                              v0 の SDK を試してみる
                                            • 200行のTypeScriptでmin-clineを実装する

                                              はじめに VSCode拡張のClineがシンプルなアーキテクチャで実現されていることを説明するために、VSCode拡張のAPIだけを使った「ワークスペース内のエラーが発生している箇所をLLMで自動修正する」タスクのみを実行する最小のClineを作りました。筆者はこれら知見を元に自作のコーディングエージェントのPoCをしています。 この記事のソースコード全文は以下のリンクにあります。 同じ拡張を最初から作る場合はまずプロジェクトを新規に始めてください。 min-cline概要 このVSCode拡張はMainコマンド「Run: mini-cline」が1つ定義されています。 min-clineの基本的な流れ Cmd+Shift+Pで"Run mini-cline"を実行する エディタのワークスペースで検出されているPROBLEMSを取得しプレーンテキストに整形 これをソースコードと共にプロンプ

                                                200行のTypeScriptでmin-clineを実装する
                                              • Array.fromAsync()とPromise.all()の違い【JavaScript】 - Qiita

                                                Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                                  Array.fromAsync()とPromise.all()の違い【JavaScript】 - Qiita
                                                • Nova.js - A collection of dependency-free React hooks

                                                  A collection of dependency-free React hooksCarefully developed React hooks that you can copy and paste into your projects.

                                                  • GitHub - cline/cline: Autonomous coding agent right in your IDE, capable of creating/editing files, executing commands, using the browser, and more with your permission every step of the way.

                                                    Meet Cline, an AI assistant that can use your CLI aNd Editor. Thanks to Claude 3.7 Sonnet's agentic coding capabilities, Cline can handle complex software development tasks step-by-step. With tools that let him create & edit files, explore large projects, use the browser, and execute terminal commands (after you grant permission), he can assist you in ways that go beyond code completion or tech su

                                                      GitHub - cline/cline: Autonomous coding agent right in your IDE, capable of creating/editing files, executing commands, using the browser, and more with your permission every step of the way.
                                                    • ReactとCSSで一定時間表示される通知をやるときの色々な方法 - Qiita

                                                      フロントエンド、というよりUI一般では、ユーザーの操作に対してまったく無反応なのは良くありません。ユーザーが意味のある操作をしたならば、何らかのフィードバックを返すべきです。 例えば、何かをユーザーのクリップボードにコピーするボタンというのはありがちですが、クリップボードに何かを書き込んでもそれだけだと目に見える変化がないので、追加で「コピーしました」のような通知を出すというのはよくあるパターンです。 ここでは、そのような通知が、ちょっとフェードインしながら表示され、一定時間後にフェードアウトしながら消えていくという要件を想定することにしましょう。 transitionを使う基本的な実装 まずはReactの部分をざっくりお見せします。 import { useState } from "react"; import "./styles.css"; export default functi

                                                        ReactとCSSで一定時間表示される通知をやるときの色々な方法 - Qiita
                                                      • Full-Stack TypeScript という名称に統一しませんか?

                                                        みなさん、Full-Stack TypeScript と呼びませんか! みなさん、こんにちは! アセンド株式会社で取締役CTOを務めている丹羽(@niwa_takeru)です。「物流の真価を開き、あらゆる産業を支える」をミッションに、運送会社向けSaaSの開発・提供をしています。また、個人としては今年5月に開催された TSKaigi の運営理事も務めております。 この記事で、みなさんにお伝えしたいことはただ1つ。↓↓↓ 「Full-Stack TypeScript という名称に統一しませんか?」 最近、フロントエンドやバックエンド、その他の領域を TypeScript で統一したアーキテクチャを採用する企業やプロダクトが増えています。私たちアセンドでも、フロントからバックエンド、IaC まで TypeScript で統一しており、1日に6回以上のデプロイを実現するなど高い生産性の恩恵を受け

                                                          Full-Stack TypeScript という名称に統一しませんか?
                                                        • typescript-mcp で AI に LSP のリファクタリング機能を与える

                                                          一旦 npm install typescript typescript-mcp -D で MCP サーバーが動くところまで作った。 主語大きめだけど、 npm の名前空間が空いてたので... これの続編 TL;DR 既存のエージェントの内蔵ツールはセマンティックな AST 操作ができない 書き換えてみて駄目だったら修正、みたいな挙動 MCP サーバーとして、 Rename, Move File, Go to Definition, Find References 等の LSP の機能を提供した 実際に動いている例 # Rename file ● typescript:move_file (MCP)(root: "~/s andbox/claude-mcp", oldPath: "examples/oth er-types.ts", newPath: "examples/types.ts"

                                                            typescript-mcp で AI に LSP のリファクタリング機能を与える
                                                          • 「Deno 2」が間もなく登場。Denoにとって初めてのメジャーバージョンアップに

                                                            Node.jsの登場は、それまで比較的面倒だったノンブロッキングな非同期のネットワークプログラミングを容易にするAPIと、それをJavaScriptという非常に広く使われているプログラミング言語で利用可能にしたことで、サーバサイドにおけるJavaScriptランタイムという分野を新たに切り開くだけでなく、当時課題となっていたC10K問題の解決など、サーバアプリケーションの開発に大きな影響を与えました。 参考:Node.jsのコンセプトとは? ライアン・ダール氏による東京Node学園祭 基調講演(前編) その上で、Node.jsはAWS Lambdaに代表されるサーバレスコンピューティング環境の基盤として採用され、新たな分散コンピューティング環境の革新にも寄与してきたと言えます。 ライアン・ダール氏の反省:NodeからDenoへ、 しかしNode.jsの開発者であるライアン・ダール氏は201

                                                              「Deno 2」が間もなく登場。Denoにとって初めてのメジャーバージョンアップに
                                                            • 型ファイルに.d.tsファイルを使うべきか | DevelopersIO

                                                              ことのはじまり 最近見かけたTypeScriptのプロジェクトで、.d.tsファイルが型ファイルとして使用されていたのですが、TypeScriptは通常.tsファイルを使用して型ファイルを書くので、.d.tsファイルを使用することはあまりないと思います。そこで、型ファイルを.d.tsファイルで書くべきなのか、それとも.tsファイルで書くべきなのか調べてみました。 この記事について 【 対象読者 】 TypeScriptの型ファイルを.d.tsファイルで書くべきなのか、それとも.tsファイルで書くべきなのかを知りたい方 .d.tsファイルについて知りたい方 【 前提条件 】 TypeScriptの基本的な知識がある方 結論 型ファイルには.tsファイルを使用してください。 以下本文 【 .d.tsファイルっていつ使うものなの?そもそも何? 】 サバイバルTypeScriptに.d.tsファイ

                                                                型ファイルに.d.tsファイルを使うべきか | DevelopersIO
                                                              • Deno と JSR がもたらす OSS の民主化という妄想

                                                                一応もうひとつ補足すると、Deno で TypeScript の実装の定義に飛べるのは TypeScript で実装されたものだけです。具体例で言うなら std/* や各種ライブラリのコードにはジャンプしてそのまま実装を読むことができますが、Deno.* などの Deno コアの組み込み API の実装には飛べません。なぜならこれらは、TypeScript 型定義は提供されているものの、実際には Rust と JavaScript ランタイムの層で実装されているためです。 もちろん、例えば VS Code なら "TypeScript: Go to Source Definition" といったコマンドがあり、それを叩くと JavaScript のシンボルにジャンプできる…ようになっている…一応。しかし、実際にやってみるとわかるが、それが期待通りの結果になってくれることは、残念ながらほとん

                                                                  Deno と JSR がもたらす OSS の民主化という妄想
                                                                • 【海外記事紹介】Node.jsでTypeScriptを実行したい?ならばType Strippingについて知っておこう

                                                                    【海外記事紹介】Node.jsでTypeScriptを実行したい?ならばType Strippingについて知っておこう
                                                                  • Drizzle x SQLiteで作成日時や更新日時をCustom typesでいい感じにしたい - くらげになりたい。

                                                                    前回の続き。Drizzle ORMをちょっと触ってみたときに、 いろいろ調べてみたときの備忘録(*´ω`*) Drizzle ORMに入門してみた with Turso - くらげになりたい。 SQLiteにはdate/time型がない Date And Time Functions 残念なことに、SQLiteにはDate/Time/DateTimeの形がなく、 以下の形式の文字列(text)か数値(integer)で保存する ISO-8601 ... text Unix timestamp ... intager いくつか便利な関数が用意されていて、それを利用する形になる date() ... YYYY-MM-DD形式のtext time() ... HH:MM:SSやHH:MM:SS.SSS形式のtext datetime() ... YYYY-MM-DD HH:MM:SSなどのtex

                                                                      Drizzle x SQLiteで作成日時や更新日時をCustom typesでいい感じにしたい - くらげになりたい。
                                                                    • スキーマバリデーションライブラリの標準インターフェース standard-schema

                                                                      スキーマバリデーションライブラリの標準インターフェース standard-schema 2025.02.15 スキーマバリデーションライブラリはここ数年で人気を集めています。多くのライブラリが登場する中で、standard-schema はスキーマバリデーションライブラリの標準インターフェースを提供します。これにより、エコシステムツールがユーザー定義の型検証ツールをより簡単に受け入れられるようにすることを目指しています。 Zod や valibot, ArkType などを代表とするスキーマバリデーションライブラリはここ数年で人気を集めています。これらのライブラリは TypeScript の型システムを活用してスキーマを定義し、それに基づいてバリデーションを行います。バリデーションを行った結果は型安全に扱うことができるのが特徴です。 ユーザー入力のように外部からのデータを安全に扱いたいよう

                                                                        スキーマバリデーションライブラリの標準インターフェース standard-schema
                                                                      • GraphQLのダイエット術 TypeScript Language Service Pluginで未使用フィールドをなくす

                                                                        はじめに GraphQLは、API開発において柔軟性と効率性を提供する強力なツールです。しかし、クエリの記述が自由な分、クライアント側で不用意に多くのフィールドを要求してしまうと、パフォーマンス低下や保守性の悪化につながる可能性があります🥲 本記事では、TypeScript Language Service Pluginの1つであるGraphQLSPを活用し、GraphQLクエリの"ダイエット"、つまり未使用フィールドの削減を実現する方法を紹介します。 ※ この記事はTSKaigi Kansai 2024で共有した内容を記事にしたものです。 GraphQLの課題と対策 over fetching問題 GraphQLは、クライアントが厳密に必要とするデータのみを要求できるため、REST APIに比べてオーバーフェッチによるパフォーマンス低下を抑えることができます✊しかし、GraphQLでも

                                                                          GraphQLのダイエット術 TypeScript Language Service Pluginで未使用フィールドをなくす
                                                                        • ワークスペースにおける TypeScript パッケージの解決戦略

                                                                          ワークスペースを利用している TypeScript プロジェクトの開発をしているとき、共通パッケージの依存解決の方法には 素直に build 成果物を参照する exports フィールドで build 前の TypeScript ファイルを直接参照する 等いくつかの選択肢があります。 このエントリでは、それぞれのやり方での制約や、開発体験の良し悪し等を比較して状況に応じてどういうアプローチを採用するのが良いか考えてみます。 補足資料 上記のスクラップで調べたことがベースになっています。 課題の整理 典型的な Full-Stack TypeScript なモノレポ構成を考えてみます: my-project/ ├── apps/ │ ├── frontend/ # フロントエンド │ ├── backend/ # バックエンド ├── packages/ │ └── shared/ # 共通パ

                                                                            ワークスペースにおける TypeScript パッケージの解決戦略
                                                                          • Announcing Vite 7

                                                                            Vite 7.0 is out! ​June 24, 2025 We're happy to share the release of Vite 7! It has been 5 years since Evan You sent the first commit to the Vite repo, and nobody could have predicted how much the frontend ecosystem would change since then. Most modern frontend frameworks and tools are now working together, building on top of Vite's shared infrastructure. And they can innovate at a faster pace by s

                                                                              Announcing Vite 7
                                                                            • TypeScriptのexhaustiveness checkをsatisfiesで簡単に書く

                                                                              みなさん、TypeScript書いてますか? ふと気づくと、もうTypeScript 1.0から数えても11年が経過しているんですね。筆者も2015年くらいから本格的に触り始めた組なので、そろそろTypeScript 10年選手を名乗ってもよさそうです。 さて、これだけ長いことTypeScriptを触っていると、昔の文法を前提とした手癖というものも蓄積されていくものです。同僚と雑談していたところ、手癖を改めるべき便利なイディオムを教えてもらったので、備忘録として残しておきます。 Before: 手癖で書いていたexhaustiveness check TypeScriptには、exhaustiveness checkというテクニックがあります。これは、TypeScriptの型システムを利用して、switch文やif文でユニオン型やEnum型の全てのケースを網羅しているかをチェックする手法で

                                                                                TypeScriptのexhaustiveness checkをsatisfiesで簡単に書く
                                                                              • TypeScriptの標準ライブラリで使われているdeclaration mergingのテクニック

                                                                                TypeScriptの標準ライブラリとは、TypeScriptに組み込みで備わっている型定義のことです。ECMAScript仕様で定義されているJavaScriptの言語機能に対する型定義が含まれています。また、ブラウザに組み込まれているWeb標準のAPIに対する型定義も含まれています。 TypeScriptの標準ライブラリでは、declaration mergingというテクニックが使われています。皆さんが普段書くアプリケーションコードではあまり使う機会がないかもしれませんが、TypeScriptの型定義、とりわけ標準ライブラリの型定義においては重要なテクニックです。 この記事では、declaration mergingの概要と、TypeScriptの標準ライブラリでどのように使われているかについて解説します。 declaration mergingとは Declaration merg

                                                                                  TypeScriptの標準ライブラリで使われているdeclaration mergingのテクニック
                                                                                • ESLint コアルールの TypeScript 対応について

                                                                                  ESLint コアルールの TypeScript 対応について ESLint v9.23.0 で ESLint のコアルールの TypeScript 対応が開始しました。 その後の ESLint のアップデートでもコアルールの TS 対応が進んでいます。ESLint コアの責務を増やすような機能追加は少し意外だと感じたので、その背景について調べてみました。 背景: 従来のコアルールの拡張方法の課題 ESLint のコアルールは JavaScript を想定して書かれたものであるが、TypeScript に対してもほぼ期待通り動作するルールが多い。TypeScript は JS のほぼ上位互換な言語であるため、TypeScript 用のパーサー (@typescript-eslint/parser) が吐き出す AST もほぼ上位互換であり、パーサーさえ TS 用のものを使えば多くの ESL

                                                                                    ESLint コアルールの TypeScript 対応について