質問するログイン新規登録

Q&A

解決済

1回答

390閲覧

TypeScript 関数で戻り値の型は、`satisfies` で縛るべき? 戻り値型を指定すべき?

kuzuha

総合スコア6

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2025/12/24 07:43

編集2025/12/24 07:49

0

0

TypeScript での satisfies の機能をうまく把握できず、使うべきタイミングがよくわかりません…

たとえば以下のように [規定値を返す場合][オプショナルな場合] があるとしたら、方針としては A / B のどちらが推奨されますか?

A: 即時 return と satisfies で使い分ける方針

[規定値を返す場合]: 即時 return を使う

TypeScript

1export function createAaaUseCases( 2 config: AaaUseCasesConfig 3): AaaUseCases { // ️☑️戻り値型で縛る 4 return { 5 async create() { ... }, 6 async cancel() { ... }, 7 }; // ⚠️satisfiesで縛らない(returnなので縛れない) 8}

[オプショナルな場合]: satisfies を使う

TypeScript

1export function createBbbUseCases( 2 config: BbbUseCasesConfig 3) { // ⚠️戻り値型で縛らない 4 const bbb = { 5 async create() { ... }, 6 async cancel() { ... }, 7 } satisfies BbbUseCases; // ✅satisfiesで縛る 8 9 // オプショナルな条件を追加 10 if (config.data) { 11 bbb.update = () => { ... }; 12 } 13 14 return bbb; 15}

B: 念のために常に satisfies にする方針

[規定値を返す場合]: satisfies を使う

TypeScript

1export function createAaaUseCases( 2 config: AaaUseCasesConfig 3) { // ⚠️戻り値型で縛らない 4 const aaa = { 5 async create() { ... }, 6 async cancel() { ... }, 7 } satisfies AaaUseCases; // ✅satisfiesで縛る 8 9 return bbb; 10}

[オプショナルな場合]: satisfies を使う

TypeScript

1export function createBbbUseCases( 2 config: BbbUseCasesConfig 3) { // ⚠️戻り値型で縛らない 4 const bbb = { 5 async create() { ... }, 6 async cancel() { ... }, 7 } satisfies BbbUseCases; // ✅satisfiesで縛る 8 9 // オプショナルな条件を追加 10 if (config.data) { 11 bbb.update = () => { ... }; 12 } 13 14 return bbb; 15}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

回答1

0

ベストアンサー

返り値型をすんなり書いて、それで型が決まる場合にsatisfiesを入れるのは過剰かなという気もします。

ただ、タプルを引き回すような複雑な式を作るような場合、式の途中でタプルだと宣言させるのは有用だと考えます。

あと、定数の宣言時にas const satisfiesとすることで、リテラル型と特定の型を満たすことの両取りができるのも便利です。

投稿2025/12/24 08:42

maisumakun

総合スコア147019

kuzuha

2025/12/25 06:59

どうもありがとうございます。タプルという語も as const satisfies という方法も知らなったので、調べることで周辺の知識が広がるきっかけにもなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問