私は次のインターフェースを持っています:
interface SMJSPacket {
header: {
tag: string;
method: string;
type: string;
};
response?: {
status: string;
content: string;
};
event?: {
key?: string;
action?: string;
};
request?: {
run?: string;
};
}
そして、それをクラスとして実装し、コンストラクターでプロパティを設定します。
class Request implements SMJSPacket {
constructor(data: any, method: string) {
this.header = {
type: 'request',
method: method || 'calld',
tag: Request.getTag()
}
this.request = data;
}
static getTag(): string {
return '_' + goog.now() + '_' + utils.getRandomBetween(1, 1000);
}
}
ただし、コンパイラによると、リクエストはインターフェイスを実装していません。どのようにチェックするのかわかりませんが、構築段階でインターフェイスに従ってすべてが入力されていますが、JavaScriptで記述されている場合は正常に機能しますが、クロージャーツールで同じことをタイプチェックすることも完全に機能します。プロトタイプにユーティリティメソッドを含めることができ、それでもJSON文字列に簡単に変換できるように、インターフェイスをクラスとして実装するという考え方です。
何か案は?
ありがとう