できない.dev

TypeScript で「Parameter implicitly has an 'any' type」(TS7006) が解決できない

noImplicitAny が有効で、引数に型注釈が無く型推論もできないためです。
引数へ明示的に型を付けるのが基本で、コールバックは文脈から型が付くよう書きます。

公開:

要約

Parameter 'x' implicitly has an 'any' type.(TS7006)は、noImplicitAnystrict 配下)が有効なときに、引数の型が注釈も推論もできず暗黙の any になっていることを示します。
原則は引数へ明示的な型を付けることで、コールバックは推論が効く書き方に直すと解消します。

よくある原因

  1. noImplicitAny 有効: strict: true を入れると noImplicitAny も有効になり、注釈の無い引数がエラーになる。
  2. 独立した関数宣言: function f(x) {} のように単独で定義した関数は呼び出し側から型が伝播しない。
  3. 型のない JS 連携: @types の無いライブラリのコールバック引数は推論材料が無く any になる。

解決策

1. 引数に型注釈を付ける

最も素直な解決策です。

function greet(name: string): string {
  return `Hello, ${name}`;
}

利用できる型注釈は公式ハンドブック(新しいタブで開く)にまとまっています。

2. 文脈的型付けを効かせる

コールバックは「型の付いた関数の引数」として渡せば推論されます。

const nums = [1, 2, 3];
nums.map((n) => n * 2); // n は number と推論される

map の型から n: number が文脈的に決まるため、注釈は不要になります。

3. 設定で段階移行する(暫定)

大量の既存コードを一度に直せない場合のみ、tsconfig.json で一時的に緩めます。

{
  "compilerOptions": {
    "noImplicitAny": false
  }
}

ただし型安全性が下がるため恒久策にはせず、noImplicitAny の意味は公式の tsconfig リファレンス(新しいタブで開く)を確認しつつ段階的に型を付けて戻してください。

実行例

実際に上記の手順を node:20 環境で動かすと、型注釈のない引数 name に対して error TS7006: Parameter 'name' implicitly has an 'any' type.(終了コード 2)が発生し、解消策 1・2 のいずれを適用しても終了コード 0 で正常にコンパイルが完了することが確認できます。

== versions ==
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
v20.20.2
Python 3.11.2
git version 2.39.5
 
                                                                               
                This is not the tsc command you are looking for                
                                                                               
 
To get access to the TypeScript compiler, tsc, from the command line either:
 
- Use npm install typescript to first add TypeScript to your project before using npx
- Use yarn to avoid accidentally running code from un-installed packages
v10.5.0
== run ==
--- Node.js バージョン ---
v20.20.2
--- TypeScript を install ---
Version 5.9.3
--- npx tsc (TS7006 を想定)---
src/bad.ts(1,16): error TS7006: Parameter 'name' implicitly has an 'any' type.
tsc 終了コード: 2
--- 解消1: 引数に型注釈を付ける ---
tsc 終了コード: 0
--- 解消2: 文脈的型付け(map の引数は推論される)---
tsc 終了コード: 0

— 2026-06-23 時点の出力

この記事は役立ちましたか?