6

TypeScript/JQuery を使用して、DOM 要素の位置と高さ/幅を計算しようとしています。TypeScript の前は、単に次のようなことをしていました。

        function ActOnClick(itemClicked, loadPath) {
            //sample code
            var v1 = itemClicked.offset();
            var v2 = itemClicked.width();
            var v3 = itemClicked.height();

        };

        $(document).ready(function () {

            $("#idCRM").click(function () {
                ActOnClick($("#idCRM"), "/Widgets/GetCRM");
            });
}

ここで、idCRM は cshtml ドキュメントの「セクション」です (ただし、任意の div などである可能性があります)。

今、このコードを TypeScript に移行しようとしていますが、ActOnClick 関数で jQuery の $("#idCRM") からどのような型が来ると予想されますか? 現在、「要素」を選択していますが、a) 幅、高さなどを公開していません。b) $("#idCRM") が原因で ActOnClick 呼び出しが失敗しています。

/// <reference path="../../ScriptsTS/jquery.d.ts" />
function ActOnClick(itemClicked: Element, loadPath: string) {

    var v1 = itemClicked.offset();  <-- FAILS
    var v2 = itemClicked.width();   <-- FAILS
    var v3 = itemClicked.height();  <-- FAILS

};

$(document).ready(function () {

    $("#idCRM").click(function () {
        ActOnClick($("#idCRM"), "/Widgets/GetCRM");  <-- FAILS
    });
}
4

1 に答える 1

16

コードを機能させる必要がある場合は、次Anyのような typescript タイプをいつでも使用できます。

function ActOnClick(itemClicked: Any, loadPath: string) {
  var v1 = itemClicked.offset();
  var v2 = itemClicked.width();
  var v3 = itemClicked.height();
};

Typescript は基本的にAny変数に対して黙っていて、エラーや警告を発行しません。ただし、で定義され$("#idCRM")たインターフェイスを実装するオブジェクトを返す必要があるため、実際には次を使用する必要があります。JQueryjquery.d.ts

function ActOnClick(itemClicked: JQuery, loadPath: string) {
  var v1 = itemClicked.offset();
  var v2 = itemClicked.width();
  var v3 = itemClicked.height();
};

、およびメソッドはそのインターフェイスで定義され、それぞれ 、およびoffset()を返します。width()height()Objectnumbernumber

于 2013-01-21T14:38:51.733 に答える