2

コンストラクターを持たない型のGoogleClosureCompilerのexternを作成しようとしています。

私は次のことを試しましたが、メソッド/プロパティのコレクションではなく、型であるBad type annotation. Unknown type WindowsMediaActiveX.Cdromことがコンパイラに通知されないため、エラーが発生します。WindowsMediaActiveX.Cdrom

/**
 * @fileoverview Declares externs for the Windows media player ActiveX control.
 * @author Joshua Dwire
 * @suppress {duplicate}
 */

var WindowsMediaActiveX={};


/**
 * Methods and properties for accessing a CD or DVD in its drive.
 */
WindowsMediaActiveX.Cdrom={};


/**
 * Retrieves the CD or DVD drive letter.
 * @type {string}
 * @readonly
 */
WindowsMediaActiveX.Cdrom.prototype.driveSpecifier;



/**
 * Methods and properties for accessing a collection of CD or DVD drives.
 */
WindowsMediaActiveX.CdromCollection={};


/**
 * Retrieves the Cdrom object associated with a particular drive letter.
 * @param {string} driveSpecifier String containing the drive letter followed by a colon (":") character.
 * @returns {WindowsMediaActiveX.Cdrom}
 */
WindowsMediaActiveX.CdromCollection.prototype.getByDriveSpecifier=function(driveSpecifier){};

私は変更できることを知っています:

/**
 * Methods and properties for accessing a CD or DVD in its drive.
 */
WindowsMediaActiveX.Cdrom={};

に:

/**
 * Methods and properties for accessing a CD or DVD in its drive.
 * @constructor
 */
WindowsMediaActiveX.Cdrom=function(){};

しかし、私や他の誰かがを使おうとしても、コンパイラは警告を表示しませんでしたnew WindowsMediaActiveX.Cdrom()。これを定義する方法について何かアイデアはありますか?

詳細情報が必要な方のために、Windows MediaActiveXコントロールを使用してメディアを再生するメディアプレーヤーに取り組んでいます。また、GoogleClosureCompilerとLibraryを使用しています。プレーヤーが正しく機能するようにexternを定義する必要がありますが、ActiveXコントロールで使用されるタイプにはコンストラクターがありません。これらはすべて、他のメソッドまたはhtmlでオブジェクトを作成することによって作成されます。externファイルでこれをどのように定義する必要がありますか?ご協力いただきありがとうございます。

4

1 に答える 1

1

このパターンの典型的な注釈は次のとおりです。

/** @const */
var WindowsMediaActiveX = {};

/**
 * Methods and properties for accessing a CD or DVD in its drive.
 * @constructor
 * @private
 */
WindowsMediaActiveX.Cdrom=function(){};

注釈は、@privateコンストラクターが直接呼び出されることを意図していないことを示しています。ただし、コンパイラは、accessControls 警告グループが有効になっている場合 (VERBOSE 警告付き)、型の直接インスタンス化に関する警告のみを報告します。

@const編集:名前空間に必要な注釈を追加するために回答が更新されました。それ以外の場合、アクセス制御アノテーションは無視されます。

于 2012-11-02T13:49:17.790 に答える