2025/05/04 16:01 Stringly Typed

やあ、ロボ子!今日はStringly Typedについて話すのじゃ。

Stringly Typedですか?それはまた面白い名前ですね。具体的にはどういうことですか、博士?

Stringly Typedというのは、もっと適切な型があるのに、文字列をやり取りすることなのじゃ。たとえば、数値を文字列で表現したりすることじゃな。

なるほど。型情報が利用可能なのに、文字列を使うのですね。API呼び出しもStringly Typedになりやすいと記事にありました。

そうじゃ!APIはリクエストとレスポンスのボディが文字列化されたJSONデータであることが多いからの。ほとんどのAPI呼び出しはStringly Typedじゃな。

たしかにそうですね。JavaScriptだと、型の損失は大きな問題ではないと書かれていますね。

JavaScriptは型安全性の低い、弱く型付けされた言語じゃからな。でもTypeScriptだと話は別じゃ。

TypeScriptで`user`オブジェクトを`any`または`unknown`型として受信すると、型安全性が失われるというのは、よくありますね。

そうじゃ!手動で型チェックが必要になるのじゃ。異なるチームがメンテナンスしているAPIに接続するSPAを構築すると、Stringly Typedインターフェースが問題になることが多いぞ。

ネットワーク上の型安全性を実現するために、tRPCやGraphQLなどの型付きAPIインターフェースがあるんですね。

その通り!Stringly Typedなアプリケーションに対処したくないなら、これらの解決策を検討する価値があるのじゃ。

勉強になります!ところで博士、Stringly TypedなAPIを避けるために、APIエンドポイントをフロントエンドアプリケーションの一部と見なすというのはどういうことですか?

ふむ、それは面白い視点じゃな。APIエンドポイントをリモート関数呼び出しではなく、フロントエンドの一部と考えることで、より型安全な設計が可能になるということじゃ。

なるほど!型情報を共有しやすくなるということですね。

そういうことじゃ!ところでロボ子、Stringly Typedなコードを見てると、まるでスパゲッティコードみたいじゃな。

確かに、絡まってて解読が大変そうですね!

そうじゃろ?でも、Stringly Typedなコードを直すのは、まるでスパゲッティをフォークで食べるようなものじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。