2014-01-16 13 views
7

私の推測によれば、これに対する答えは「いいえ」ですが、私が逃したことがないかどうかチェックしたいと思っています。TypeScriptを使用してjQuery.fn.extendをモデル化することは可能ですか?

jQueryには、fn.extend methodがあります。これにより、追加のメソッドでjQueryオブジェクトを拡張することができます。ここではAPIドキュメントからの例です:

jQuery.fn.extend({ 
    check: function() { 
    return this.each(function() { 
     this.checked = true; 
    }); 
    }, 
    uncheck: function() { 
    return this.each(function() { 
     this.checked = false; 
    }); 
    } 
}); 

// Use the newly created .check() method 
$("input[type='checkbox']").check(); 

私はDefinitelyTypedプロジェクトのためのjQueryのJSDocのとテストに必要事項を記入してきました。以前はjQuery.fnはanyと定義されていました。 extend方法カバーするために、私はそれを変更することで見てきたドキュメントと整合させる:しかし

fn: { 
    /** 
    * Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. 
    * 
    * @param object An object to merge onto the jQuery prototype. 
    */ 
    extend(object: any): any; 
} 

を、私はダイナミックをモデル化するのではなくする活字体で仕方がないと思いますstaticメソッドの拡張。 $("input[type='checkbox']")["check"]();

ようanyまたは

  • 使用ブラケット表記に

    1. キャストのjQueryだから私の質問は:そこにあるこれは、それはあなたのいずれかの場合を除き、その後、あなたのTSでこれらの動的に増補の方法を使用することはできません意味します私が逃した何か? jQuery.fnをモデル化するより良い方法があるので、TypeScriptはjQueryStaticにこれらの動的メソッドが割り当てられていることを認識できますか?私が言うように、私は答えが "いいえ"だと思うが、私は確信したかった。

  • 答えて

    3

    定義内のコンパイラでコードを実行するのはいいですが、そのような構文は存在しません。

    
    interface Foo{ 
        bar(member:any):any @ execute { // execute this code inside the compiler language service: 
         var keys = compiler.getArgs().keys(); 
         compiler.getIdentifier('JQueryStatic').addMembers /// you get the point. 
        } 
    } 
    

    しかし、それはコンパイルが遅い作りの可能性を秘めている、と私は推測テーブルの上にはない、その多くの作業はもちろんのこと、エッジ例フル次のようになります。これは、私はそれがよかったものです。

    +0

    そのBasのための歓声。それは私が期待していたものの、私は思ったほどの価値があると思います。 –

    +0

    関連機能リクエスト 'contract programming':https://typescript.codeplex.com/workitem/700 – basarat

    +0

    ありがとうございます - これで投票しました! –

    関連する問題