1
入力を作成する既存のJavascriptフレームワークを想定します。 JavaScriptコードは、Node.jsのモジュール、プロトタイプの継承とミックスインを使用しています:それはいくつかのメンバーは、そのコンストラクタで/によって作成されていることを伝えるように宣言ファイルにミックスインを記述する
// File: src/lib/a.js
function A() {
this.isA = true;
this.type = 'a';
}
module.exports = A;
// File: src/lib/b.js
var A = require('./a');
var plugin = require('./plugin');
function B() {
A.call(this);
this.isB = true;
this.type = 'b';
plugin(this);
}
B.prototype = object.create(A.prototype);
B.prototype.constructor = B;
module.exports = B;
// File: src/lib/plugin.js
function plugin(obj) {
obj.doSomethingFancy = function() {
// ...
}
}
module.exports = plugin;
はどのように宣言ファイルにB
を説明しますか?
この質問は実装に関するものではなく、周囲の宣言に関するものです。また、引数のために、子クラスがその親コンストラクタを呼び出さないことを決定するかもしれないと仮定します。 – ciss
@ciss私は、メンバーがコンストラクターによって作成されたという事実を伝える方法を知らない。メンバが未定義である可能性を伝えたい場合は、 '? 'と接尾辞をつけてください(' isA?'のように)。派生型ではなく、基本型のコンストラクタを呼び出すとTSエラーが発生する可能性がありますが、これが単なるライブラリ定義であれば、外部ライブラリのエラーを無視するようにコンパイラに指示できます。 –