TS2345: Argument of type 'X' is not assignable to parameter of type 'Y'
TypeScriptで関数の引数に互換性のない型を渡した際のコンパイルエラー
概要
TS2345: Argument of type 'X' is not assignable to parameter of type 'Y' は、関数やメソッドの引数に期待される型と異なる型の値を渡した際に発生するTypeScriptのコンパイルエラーです。TS2322と似ていますが、こちらは関数の引数に特化したエラーです。
エラーメッセージ
TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
TS2345: Argument of type '{ name: string; }' is not assignable to parameter of type 'User'.
TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
原因
- 関数引数の型不一致: 引数の型が関数シグネチャと合わない
- オプショナル値の未処理:
T | undefinedをTを要求する関数に渡している - ジェネリクスの型推論失敗: 型パラメータが意図通りに解決されない
- コールバック関数の型不一致: イベントハンドラや高階関数での型ミス
- 配列メソッドの型問題: filter()やfind()の戻り値型
解決策
1. 型の絞り込みを行う
| |
2. Array.filterの型安全な使い方
| |
3. ジェネリクスに明示的な型引数を指定
| |
4. イベントハンドラの型を合わせる
| |
5. 関数オーバーロードで柔軟に対応
| |
6. satisfiesで型チェックしつつリテラル型を維持
| |
関連エラー
TypeScript の他のエラー
この記事は役に立ちましたか?