TypeScript

Zod OpenAPI Honoで.openapi()を使わずにスキーマ定義を書きたい!

と思ってたらふつうにできた。 どういうこと? Honoでサーバーサイドアプリケーションを書くときに、ミドルウェアとしてZod OpenAPI Honoを使うと、ZodのスキーマからOpenAPIのスキーマが生成できて便利。 例えばこういうZodのスキーマを用意して import { z…

Kori(サーバーサイドTS用のウェブアプリケーションフレームワーク)の0.4.0をリリースした

Kori(氷)は、自分好みのものを作ってみようと思って開発したフレームワーク。コアとして入れたい機能はできたのでひとまず満足している。もうAPIに対する大きな変更は入れないつもり。ちなみに、ルーターにはHonoのルーターを使っている。 スキーマを中心…

Zodのz.discriminatedUnionは結局、識別プロパティの指定が必要な仕様に戻ってた

以前にZod v4リリース前のz.discriminatedUnionを見てた。このときはまだv4リリース前のベータ版だった。 そういえば、ドキュメント修正のIssueあげたことをすっかり忘れてたなぁ。どうなったんだろう?って思って見てみたら、最終的に仕様が変わってた。あ…

ESLintとtsdownをバージョンアップしたメモ

どっちも自分が影響を受ける変更が入ってた。 ESLint 1年前にFlat Config + TypeScriptについて勉強してメモを残していた。 typescript-eslintとFlat Config - Mitsuyuki.Shiiba そのあと全然チェックしてなかったけど、2025年3月にみんなの意見を取り入れて…

Kori (氷) というTypeScript用のウェブアプリケーションフレームワークをCursorたちと一緒に作ってみている

とりあえずコンセプトは動きそうだなぁってくらいで、ちゃんと動くことも確認してないし、テストも書いてないし、まだまだやることはたくさんあるんだけど、どっかでいったんブログに書いて休憩しようと思ったので、書くことにした。年内である程度動くとこ…

Zod v4でz.discriminatedUnionはどうなる予定なんだっけ?を見ておいた

2025-12-14 追記 正式版リリースの前にdiscriminatedUnionまわりの仕様変更が入っていました。この記事の内容から変わってるので↓こちらの記事も合わせてご確認ください! 追記ここまで 「数日前に↓のIssueがクローズされたんだよねー。Zod v4が関係してそう…

HonoのZod OpenAPIを読んでたらWebStormのCPUとメモリを消費しまくってたのをJetBrainsにレポートしたらすぐに解決方法を教えてもらってニッコリなメモ

HonoとZodとOpenAPIまわりが気になって、Zod OpenAPIのコードをWebStormで読んでたら、WebStormとNode.jsのプロセスがCPUをたくさん消費して、動きが遅くなって困った。メモリもWebStormに割り当てたぶんを使い切っちゃうよーって警告が出てきてた。 なんの…

TypeScriptのBranded TypeとZodの.brand

Branded Typeについては、もういろんなところで触れられているから、わざわざ書かなくてもいいよなぁという気持ちがありつつ。でも、せっかく頭の整理をしたから、来月の自分用にまとめておくくらいはやっておこうか、という気持ちになったのでメモを残して…

Zodのドキュメントを読みながら自分用にメモ

基本的なことは大丈夫なのでざっと読んで気になったところだけをメモしておく。使ってるときに「そういえばこんな機能がZodにあった気がする」って頭の中で引っかかるように。 視点としては、Webアプリケーションのサーバーサイドを作る頭で読んでる。フレー…

typescript-eslintとFlat Config

2025-11-22 追記 ESLintに変更が入って tseslint.config はdeprecateになってた。 2025-11-22 追記ここまで typescript-eslintのFlat Configについて、自分に今必要そうな部分だけをひととおり確認したので忘れる前にメモを残しておく。 前提 素のJavaScript…

NeverThrowのESLintプラグインをフォークしてFlat Configに対応した

ちょっと前にNeverThrowを触ろうとして、そのESLintプラグインがFlat Configに未対応だったから、そこで遊んでしまった話を書いたけど。 遊んでしまったついでに、フォークしてFlat Configに対応した。 www.npmjs.com pnpmとかでインストールして # npm npm …

NeverThrowを触ろうと思ったらESLintのFlat Configを触っていた(後編)

の続き。eslint-plugin-neverthrow に手を入れて動くようにしてみるぞー!そして記事を書き終わるぞー! eslint-plugin-neverthrow に手を入れてみる そのままでは動かなさそうだから手を入れて動くようにしてみたい。パッケージを作ればできそうではあるけ…

NeverThrowを触ろうと思ったらESLintのFlat Configを触っていた(中編)

の続き。Flat Configで eslint-plugin-neverthrow を使えるようにするぞー! Flat Config? そもそもFlat Configをよくわかっていない ってところからスタート。へー。v9でFlat Configがデフォルトになっていて、v8は2024年10月からEOLなのか。 https://eslin…

NeverThrowを触ろうと思ったらESLintのFlat Configを触っていた(前編)

TypeScriptでサーバーサイドのアプリケーションを書いていて、エラーをThrowするより型安全に失敗を返したいなと思って、簡単なResult型をペラっと作って使ったことがある。 あまり複雑なことはしたくないからそれで満足しているんだけど、TSKaigiやTSKaigi …

TSKaigi Kansaiから帰ってきてDuckDB Wasmで遊んだ

カケハシのスタッフとしてTSKaigi Kansaiに参加して楽しんできた。 スポンサーのランチLTでカケハシのメンバーも喋るからブースを抜け出して見に行ってたら、newmoの大貫さんのLTで「DuckDB Wasmを使ってクライアントだけで処理したよ!」って発表があって、…

TypeScript 5.8で条件付き戻り値型に対するナローイングができるようになりそう(特定の制約を満たす場合)

数日前にTypeScript 5.7 RCがアナウンスされてリリースが楽しみだなー!ってところなんだけど、そのさらに数日前に、ウォッチしていたこのPR↓がマージされてTypeScript 5.8.0のマイルストーンに入った。わー! これが今日のお話。TypeScript 5.8.0でConditio…

TypeScriptでGeneric Typeに対するNarrowingをしたかったけど現在のところ対応していなかった

2024-11-11 追記ここから ---- TS 5.8で、その1のインデックスアクセス型の方はサポートされそう。その2の方はその対応が入ってもサポートされない。 追記ここまで ---- 最初にまとめ 現在のTypeScript(2024-09-19時点のバージョン5.6.2)では Generics …

TypeScriptでタグ付きユニオンのタグがユニオンの場合でも個別にExtractしたい

何を言っているんだ?というタイトルだけど、今日はTypeScriptの型で遊んでた。 タグ付きユニオンから型をExtractしたい こういうタグ付きユニオンがあって type MyUnion = | { tag: "a", value: boolean } | { tag: "b", value: boolean } | { tag: "c", va…

TS5.5のInferred Type Predicatesでちょこっと気にしておきたいなと思ったこと

昨日TSKaigiに参加してとても楽しかった。そのキーノートスピーカーがDanielで、5.5の新機能を教えてくれた。 ので、今日は↓この記事のInferred Type Predicatesを手を動かしながら読んだ。面白かった。まだ5.5はベータ。 devblogs.microsoft.com Inferred T…