で機能を拡張:は、私はJavaScriptで書かれたNode.jsのモジュールのこのタイプを持って活字体
function main(options) {
return "some string";
}
main.methodName = function() {
// implementation;
};
main.objectName = {
// a namespace;
};
main.propertyName = 123;
module.exports = main;
活字体で、そのようなインターフェースを宣言するの適切な方法は何ですか?
明確化
私はそれが活字ファイルから正しく使用できるように、適切に既存のNode.jsのモジュールのために活字体で、このようなインタフェースを宣言する方法についての質問ではなく、どのように再実装なんですTypeScriptのインターフェイスその後
import * as myModule from "my-module";
var s = myModule({});
私は:私はこのようにそれを使用する場合でも、
declare module "my-module" {
// Default library interface
interface main {
(options?:{}):string,
methodName():any,
propertyName:any,
objectName:Object
}
export default main;
}
:@toskvからの提案に続き
UPDATE
は、私は、次のインターフェイスが追加されましたエラーCannot invoke an expression whose type lacks a call signature.
が発生しました。
理由は何ですか?そのコードを記述
活字体が有効なJavaScriptでこのコードを意味するJavaScriptのスーパーセットであり、また有効活字体です。 –
@Gothdoそれが真実である間、TypeScriptは静的型付けのために型が定義された後にオブジェクトを拡張するのに苦労します。関数にプロパティを追加する。コードをクラスに変換する方がずっと簡単で洗練されています。 :) – toskv