別の関数を返すTypescriptメンバー関数

Kiren S

クラスがあります

import {Request, Response, Router} from 'express';
import {IAccessTokenMiddleWare} from "./IAccessTokenMiddleWare";

class AccessTokenMiddleWare implements IAccessTokenMiddleWare {


    private jwtToken: string;
    constructor() {

        this.jwtToken = "";
    }
    public init()  : any  {

        return function (req: Request, res: Response, next: any) {

            this.addJwtToReqBody(req);
        }
    }

    private addJwtToReqBody(req) {

        console.log("ADDED...")
    }
}

export {AccessTokenMiddleWare}

私はそれを以下のように呼び出しています

var accessTokenMiddleWare = new AccessTokenMiddleWare();
router.use(accessTokenMiddleWare.init());

エラーが発生する

エラーTS2683: 'this'には型注釈がないため、暗黙的に型 'any'があります。

このエラーを解決するにはどうすればよいですか?

TitianCernicova-Dragomir

Typescript(およびJavaScript)の関数には固定がないthisためthis、呼び出し元によって決定されます。返される関数は任意のthisオブジェクトで呼び出すことができるため、コンパイラはthisデフォルトで任意であると想定し、次を使用するとエラーが発生しますstrict

accessTokenMiddleWare.init().call({ newThis: true });

宣言コンテキストからこれをキャプチャする場合はthis、現在のクラスとして入力する矢印関数を使用する必要があります

class AccessTokenMiddleWare implements IAccessTokenMiddleWare {


    private jwtToken: string;
    constructor() {

        this.jwtToken = "";
    }
    public init() {

        return (req: Request, res: Response, next: any) => {

            this.addJwtToReqBody(req);
        }
    }

    private addJwtToReqBody(req: Request) {

        console.log("ADDED...")
    }
}

また、型アノテーションを削除したことに注意してください。これinitにより、コピー担当者は、戻り値が関数であると推測し、型チェックを改善できます。手動で指定することもできます:init(): (req: Request, res: Response, next: any) => void

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

メンバー変数を取得する関数を返す関数

分類Dev

別のメンバー関数の実装からメンバー関数を呼び出す

分類Dev

非静的メンバー関数の無効な使用-別のクラスメンバー関数を呼び出すクラスメンバー関数

分類Dev

Javascript-関数パラメータで別の関数を返します

分類Dev

std :: pairを返す関数へのメンバー関数ポインターを作成します

分類Dev

クラスメンバー関数から関数ポインタを返す

分類Dev

(通常)(メンバーデータへの)参照を返すメンバー関数から定数を返す方法

分類Dev

std :: async with a member関数、引数として別のメンバー関数を保持します

分類Dev

関数を返す関数のTypescriptインターフェース

分類Dev

関数を返す関数の特別な構文関数を返す関数

分類Dev

別の関数から関数ポインタを返す

分類Dev

メンバー関数のアドレスを別のクラスの関数に渡す

分類Dev

メンバー関数は、メンバー変数の右辺値参照を返します

分類Dev

バックボーン関数の外部で変数を返す

分類Dev

クラスメンバーからすべての属性を返す関数

分類Dev

別の関数からprint()のメンバーを初期化します

分類Dev

別のクラスのメンバー関数を呼び出すc ++

分類Dev

C ++データメンバーは、別のメンバー関数で定義された後、ガベージを返します

分類Dev

メンバー関数と非メンバー関数、コピーまたは参照を返しますか?

分類Dev

kotlinでメンバー変数と関数変数を区別する方法

分類Dev

クラス内で自動を返す静的constexprメンバー関数の使用

分類Dev

C ++ DLLのメンバー関数で自分自身を返すクラス

分類Dev

forステートメントJavaScriptを使用する別の関数内の関数

分類Dev

javascript関数内のtypescriptクラスメンバーを読み取ります

分類Dev

別の関数から「コンパレータ」を返す

分類Dev

非静的メンバー関数をテンプレート引数として別のメンバー関数に渡す方法は?

分類Dev

非静的メンバー関数をテンプレート引数として別のメンバー関数に渡す方法は?

分類Dev

メンバー関数へのポインターを返すメンバー関数を作成するにはどうすればよいですか?

分類Dev

引数としてargsを持つメンバー関数を別のメンバー関数に渡す方法は?

Related 関連記事

  1. 1

    メンバー変数を取得する関数を返す関数

  2. 2

    別のメンバー関数の実装からメンバー関数を呼び出す

  3. 3

    非静的メンバー関数の無効な使用-別のクラスメンバー関数を呼び出すクラスメンバー関数

  4. 4

    Javascript-関数パラメータで別の関数を返します

  5. 5

    std :: pairを返す関数へのメンバー関数ポインターを作成します

  6. 6

    クラスメンバー関数から関数ポインタを返す

  7. 7

    (通常)(メンバーデータへの)参照を返すメンバー関数から定数を返す方法

  8. 8

    std :: async with a member関数、引数として別のメンバー関数を保持します

  9. 9

    関数を返す関数のTypescriptインターフェース

  10. 10

    関数を返す関数の特別な構文関数を返す関数

  11. 11

    別の関数から関数ポインタを返す

  12. 12

    メンバー関数のアドレスを別のクラスの関数に渡す

  13. 13

    メンバー関数は、メンバー変数の右辺値参照を返します

  14. 14

    バックボーン関数の外部で変数を返す

  15. 15

    クラスメンバーからすべての属性を返す関数

  16. 16

    別の関数からprint()のメンバーを初期化します

  17. 17

    別のクラスのメンバー関数を呼び出すc ++

  18. 18

    C ++データメンバーは、別のメンバー関数で定義された後、ガベージを返します

  19. 19

    メンバー関数と非メンバー関数、コピーまたは参照を返しますか?

  20. 20

    kotlinでメンバー変数と関数変数を区別する方法

  21. 21

    クラス内で自動を返す静的constexprメンバー関数の使用

  22. 22

    C ++ DLLのメンバー関数で自分自身を返すクラス

  23. 23

    forステートメントJavaScriptを使用する別の関数内の関数

  24. 24

    javascript関数内のtypescriptクラスメンバーを読み取ります

  25. 25

    別の関数から「コンパレータ」を返す

  26. 26

    非静的メンバー関数をテンプレート引数として別のメンバー関数に渡す方法は?

  27. 27

    非静的メンバー関数をテンプレート引数として別のメンバー関数に渡す方法は?

  28. 28

    メンバー関数へのポインターを返すメンバー関数を作成するにはどうすればよいですか?

  29. 29

    引数としてargsを持つメンバー関数を別のメンバー関数に渡す方法は?

ホットタグ

アーカイブ