[解決済み】 'this' は型アノテーションがないため、暗黙のうちに 'any' 型を持っている
2022-04-13 21:54:28
質問
を有効にすると
noImplicitThis
で
tsconfig.json
というエラーが出てしまいます。
'this' implicitly has type 'any' because it does not have a type annotation.
class Foo implements EventEmitter {
on(name: string, fn: Function) { }
emit(name: string) { }
}
const foo = new Foo();
foo.on('error', function(err: any) {
console.log(err);
this.emit('end'); // error: `this` implicitly has type `any`
});
型付けされたものを追加する
this
をコールバック・パラメーターに追加すると、同じエラーが発生します。
foo.on('error', (this: Foo, err: any) => { // error: `this` implicitly has type `any`
回避策としては
this
をオブジェクトに置き換えてください。
foo.on('error', (err: any) => {
console.log(err);
foo.emit('end');
});
しかし、このエラーの適切な修正方法は何でしょうか?
UPDATEです。
を追加することが判明しました。
this
をコールバックに追加することで、確かにエラーに対処できました。私がこのエラーを見たのは、arrow関数に型アノテーションを付けて
this
:
解決方法は?
を挿入することで、確かにエラーは直りました。
this
を、最初のコールバック・パラメータとしてタイプ・アノテーションで指定します。私の試みは、同時にコールバックをarrow-functionに変更することで失敗してしまいました。
foo.on('error', (this: Foo, err: any) => { // DON'T DO THIS
これでよかったんだ。
foo.on('error', function(this: Foo, err: any) {
またはこれです。
foo.on('error', function(this: typeof foo, err: any) {
GitHub
問題
が作成され、コンパイラのエラーメッセージを改善し、実際の文法エラーを強調するようになりました。
this
やarrow-functionsがあります。
関連
-
[解決済み] エラー TS2322: タイプ 'Object[]' はタイプ '[Object]' に割り当てられません。
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] フォーインステートメント
-
[解決済み] タイプスクリプト TS7006 です。パラメータ 'xxx' は暗黙のうちに 'any' 型を持ちます。
-
[解決済み] エラー TS2345: 型 'T' の引数は型 'object' のパラメータに代入できません。
-
[解決済み] モジュール 'module-name' の宣言ファイルが見つかりませんでした。'/path/to/module-name.js' は暗黙のうちに 'any' 型を持っています。
-
[解決済み] Typescript オブジェクトのインデックス付きメンバの型を強制する?
-
[解決済み] TypeScriptのオブジェクトリテラルでの型定義
-
[解決済み] タイプスクリプトのレコードタイプとは何ですか?
-
[解決済み】Typescriptのパラメータ名のクエスチョンマークとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Typescriptで、! (エクスクラメーションマーク/バン)演算子でメンバを再参照するのは?
-
[解決済み] エラー TS2322: タイプ 'Object[]' はタイプ '[Object]' に割り当てられません。
-
[解決済み] 2つのインターフェイスを統合する
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
TS1128: 宣言または声明が必要です。
-
[解決済み] eslintをtypescriptで使用する - モジュールへのパスを解決できない
-
[解決済み] タイプスクリプト TS7006 です。パラメータ 'xxx' は暗黙のうちに 'any' 型を持ちます。
-
[解決済み] TypeScriptの非同期関数でプロミスを返す
-
[解決済み] TypeScript で `window` に新しいプロパティを明示的に設定するにはどうすればよいですか?
-
[解決済み] TypeScriptでインターフェースファイルの定義に基づいたオブジェクトを作成するには?