3.1以降のTypeScriptは、コールバック関数の引数タイプを受け入れません

jcubic

jQueryターミナルでこの問題が発生しましたかなり大きなd.tsファイルがありますが、正しく機能しません。依存関係を更新しようとしましたが、すべてが壊れました。このタイプのエラーが発生したため、しばらくの間TypeScriptを更新できませんでした(3.1以降のバージョン)

./node_modules/.bin/tsc --noEmit --project tsconfig.json
test.ts:18:31 - error TS7006: Parameter 'command' implicitly has an 'any' type.

18 $('.term').terminal([function(command, term) {

そのコールバック関数でさえ、タイプが定義されています。

TypeScriptプレイグラウンドを確認しましたが、これは正常に機能します。

type arg = ((x: number) => number) | number;
function hey(list: arg[]) {
  list.forEach(x => {
    if (typeof x === 'function') {
      x(10);
    }
  });
}

hey([10, function(x) { x.toFixed(10); return x }]);

ちょっと使用すると、型のない関数があり、型はコールバック定義から取得されます。なぜこれが起こるのか、そしてそれを修正する方法の手がかりを誰かが持っていますか?問題は、typescriptを更新しないと、TypeScriptのようにbabel_traverseからエラーが発生することです。コードをタイプチェックしないと、無効な構文でtypescriptから何千ものエラーが発生します。Angular:node_modules / @ types / babel _traverse / index .d.ts(1137,43):エラーTS1109:式が必要です

答えがわからない場合は、typescript d.tsファイルをデバッグして、自分で問題を見つける方法を知っているかもしれません。

編集:

これは型宣言の一部です:

type TypeOrArray<T> = T | T[];
declare namespace JQueryTerminal {
    type interpreterFunction = (this: JQueryTerminal, command: string, term: JQueryTerminal) => any;
    type terminalObjectFunction = (...args: (string | number | RegExp)[]) => (void | TypeOrPromise<echoValue>);
    type Interpreter = string | interpreterFunction | ObjectInterpreter;
    type ObjectInterpreter = {
        [key: string]: ObjectInterpreter | terminalObjectFunction;
    }   
}

interface JQuery<TElement = HTMLElement> {
    terminal(interpreter?: TypeOrArray<JQueryTerminal.Interpreter>, options?: TerminalOptions): JQueryTerminal;
}

問題は、これが以前のバージョンのTypeScriptで正常に機能したことです。

そしてここに私のtsconfig.json

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "strict": true,
        "lib": ["es2015", "ES2018.Promise", "dom"]
    },
    "exclude": ["npm"]
}

そして私はCIのタイプをチェックするtest.tsにこれを持っています:

/// <reference path="./js/jquery.terminal.d.ts" />

import "jquery";
import "jquery.terminal";


function test_type<T>(x: T) {};

// this works
$('.term').terminal(function(command, term) {
    term.echo(command);
});
// this also works
$('.term').terminal(function(command) {
    this.echo(command);
});
// this doesn't work, function in array
$('.term').terminal([function(command, term) {
    term.echo(command);
    return Promise.resolve(document.createElement('div'));
}]);
thedude

TypeOrArray明示的な関数のオーバーロードに置き換えると、この問題が修正されるようです。

interface JQuery<TElement = HTMLElement> {
   terminal(interpreter?: JQueryTerminal.Interpreter): any;
   terminal(interpreter?: JQueryTerminal.Interpreter[]): any;
}

TS遊び場

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Python 3.xを使用して、コールバックとその引数をラップされた関数からデコレータに渡す方法は?

分類Dev

IOHIDDeviceSetReportメソッドは、Swift3のUnsafeRawPointerタイプを受け入れません

分類Dev

加算演算子を3つの引数を受け入れる関数に「チェーン」しますか?

分類Dev

Pythonのsqlite3のexecutemanyは、タプルのリストを受け入れません

分類Dev

ErlangのコールバックはMFA関数(apply / 3、spawn / 3、...)を介してのみ呼び出されますか?(カスタムビヘイビアHOWTO)

分類Dev

@ types / d3-tipを使用できません:タイプ「ツールチップ」の引数は割り当てできません

分類Dev

boto3 dynamodb put_item()エラーはキーワード引数のみを受け入れます

分類Dev

Python:Boto3:get_metric_statistics()はキーワード引数のみを受け入れます

分類Dev

ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

分類Dev

指定された整数パラメーターがX未満の場合に再起動する、または3未満の値の受け入れを拒否する関数またはループを定義します

分類Dev

複数のコンテンツタイプを受け入れるためのS3.getSignedUrl

分類Dev

同時に3つ以下のアルファベットを含む正規表現は、1a1a1a1a1を受け入れてはなりません。

分類Dev

インデックスが範囲外であるため、インデックス3で引数をバインドできません。ステートメントには1つのパラメーターがあります

分類Dev

f(123)= 1!+ 2!+ 3!。私はこのタイプの関数が機能するようにコードを書きました。それを見てください。私のコードは望ましい結果を与えていません

分類Dev

ElementTree TypeError Python3の「write()引数はバイトではなくstrでなければなりません」

分類Dev

カスタムビューCustomViewは、2引数または3引数のビューコンストラクターを使用していません

分類Dev

エラー:C2661: 'std :: array <uint、3> :: array':オーバーロードされた関数は3つの引数を取りません

分類Dev

Ionic3はコールバック関数でpromiseを拒否できません

分類Dev

D3、Typescript-タイプ 'this'の引数はタイプ 'BaseType'のパラメーターに割り当てることができません

分類Dev

wse3継承クラスタイプはメソッドパラメータとして受け入れられません

分類Dev

NullInjectorError:R3InjectorError(DynamicTestModule)[ルーター->関数->関数]:NullInjectorError:関数のプロバイダーがありません

分類Dev

Hibernate3 Mavenプラグインエラー:1つの引数デリゲートコンストラクターで「MyReverseStrategy.java」を作成または検索できませんでしたか?

分類Dev

UIBarButtonItem-'#selector'の引数はローカル関数を参照できません-Swift3

分類Dev

Swift 3:タイプ「NSMutableDictionary」の値を期待される引数タイプ「[AnyHashable:Any]!」に変換できません。

分類Dev

D3コールバック関数の `this`はオブジェクトの` this`をシャドウします

分類Dev

S3インスタンスへのLambda関数がアップロードされていません

分類Dev

NodeJSコールバックを使用したS3バケットへのアップロードは関数である必要があります。未定義を受信しました

分類Dev

S3APIのgetObjectコールバック内の何もLambda関数で実行されていません

分類Dev

forループを使用して1〜100の数値を出力する3の倍数は赤で下線が引かれ、5の倍数は青でイタリック体になります

Related 関連記事

  1. 1

    Python 3.xを使用して、コールバックとその引数をラップされた関数からデコレータに渡す方法は?

  2. 2

    IOHIDDeviceSetReportメソッドは、Swift3のUnsafeRawPointerタイプを受け入れません

  3. 3

    加算演算子を3つの引数を受け入れる関数に「チェーン」しますか?

  4. 4

    Pythonのsqlite3のexecutemanyは、タプルのリストを受け入れません

  5. 5

    ErlangのコールバックはMFA関数(apply / 3、spawn / 3、...)を介してのみ呼び出されますか?(カスタムビヘイビアHOWTO)

  6. 6

    @ types / d3-tipを使用できません:タイプ「ツールチップ」の引数は割り当てできません

  7. 7

    boto3 dynamodb put_item()エラーはキーワード引数のみを受け入れます

  8. 8

    Python:Boto3:get_metric_statistics()はキーワード引数のみを受け入れます

  9. 9

    ボタンクリック時にコードビハインドから複数のJavaScript関数を呼び出したい。3つのjavascript関数では問題なく動作しますが、それ以上ではありません

  10. 10

    指定された整数パラメーターがX未満の場合に再起動する、または3未満の値の受け入れを拒否する関数またはループを定義します

  11. 11

    複数のコンテンツタイプを受け入れるためのS3.getSignedUrl

  12. 12

    同時に3つ以下のアルファベットを含む正規表現は、1a1a1a1a1を受け入れてはなりません。

  13. 13

    インデックスが範囲外であるため、インデックス3で引数をバインドできません。ステートメントには1つのパラメーターがあります

  14. 14

    f(123)= 1!+ 2!+ 3!。私はこのタイプの関数が機能するようにコードを書きました。それを見てください。私のコードは望ましい結果を与えていません

  15. 15

    ElementTree TypeError Python3の「write()引数はバイトではなくstrでなければなりません」

  16. 16

    カスタムビューCustomViewは、2引数または3引数のビューコンストラクターを使用していません

  17. 17

    エラー:C2661: 'std :: array <uint、3> :: array':オーバーロードされた関数は3つの引数を取りません

  18. 18

    Ionic3はコールバック関数でpromiseを拒否できません

  19. 19

    D3、Typescript-タイプ 'this'の引数はタイプ 'BaseType'のパラメーターに割り当てることができません

  20. 20

    wse3継承クラスタイプはメソッドパラメータとして受け入れられません

  21. 21

    NullInjectorError:R3InjectorError(DynamicTestModule)[ルーター->関数->関数]:NullInjectorError:関数のプロバイダーがありません

  22. 22

    Hibernate3 Mavenプラグインエラー:1つの引数デリゲートコンストラクターで「MyReverseStrategy.java」を作成または検索できませんでしたか?

  23. 23

    UIBarButtonItem-'#selector'の引数はローカル関数を参照できません-Swift3

  24. 24

    Swift 3:タイプ「NSMutableDictionary」の値を期待される引数タイプ「[AnyHashable:Any]!」に変換できません。

  25. 25

    D3コールバック関数の `this`はオブジェクトの` this`をシャドウします

  26. 26

    S3インスタンスへのLambda関数がアップロードされていません

  27. 27

    NodeJSコールバックを使用したS3バケットへのアップロードは関数である必要があります。未定義を受信しました

  28. 28

    S3APIのgetObjectコールバック内の何もLambda関数で実行されていません

  29. 29

    forループを使用して1〜100の数値を出力する3の倍数は赤で下線が引かれ、5の倍数は青でイタリック体になります

ホットタグ

アーカイブ