2017-01-22 2 views
-5

関数の引数がどの引数とどの型の引数を取るかを定義する方法はありますか?たとえば:宣言にアクセスできない関数のインタフェースを定義します。

enter image description here

私は、インターフェイスがboundTransportFn何のためにあるのかを宣言するために活字体を使用したいと思います。その引数の型は関数ですが、どのような関数が引数を取るためにTypeScriptを使うことができますか?

重要:この関数(boundTransportFn)は、私がアクセスできないユーザー指定の関数です。言い換えれば、私はboundTransportFn宣言へのアクセスを持っていない、私が持っているすべてのパラメータ

+0

私はスクリーンショットとしてあなたのコードを含めているので、ほとんどの下降声が与えられたと信じています。確かに、なぜあなたはコード_itself_の代わりにあなたのコードの_picture_を含めることを選択するのですか?覚えておいてください、あなたは助けを求めています。人々はあなたのためにあなたを助けます:できるだけ手助けするのは簡単です。誰もあなたのコードを手動で入力して問題を確認するのではなく、単純にコピーペーストすることができます。 StackOverflowには、コードフォーマットと構文強調表示機能があります。質問の内容はうまくいきます、IMO。 –

+0

ダウンボッターはそれを言及する必要があります。フィードバックをお寄せいただきありがとうございます;私はまだ私がその質問に対する良い答えを持っているとは思わない。 – Olegzandr

答えて

1

私は適切に質問を理解してかどうかわからないんだけど、ここでは、関数の二つの引数取っている引数宣言することができる方法です - それは私が関数の型がすべきだと思うものだ(とvoidを返す - anystringを私はあなたのコードを見たときに)なる:

return function (boundTransportFn: (a: any, key: string) => void) { 
} 

handbookセクション「関数型の記述」を参照してください。

+0

ああ、これは良い答え、ありがとう! – Olegzandr

2

あるはい、あります:

interface SearchFunc { 
    (source: string, subString: string): boolean; 
} 

let mySearch: SearchFunc; 
mySearch = function(source: string, subString: string) { 
    let result = source.search(subString); 
    return result > -1; 
} 

注意がこのofficial Typescript handbookからまっすぐに来ています。 ;-)

だから、あなたの例では、次のとおりです。MyClass.myMethod()

interface BoundFunc { 
    // Put your definition here 
} 

// Then, somewhere else: 
export class MyClass { 

    myMethod(boundTransportFn: BoundFunc) { 
    return function(boundTransportFn) { 
     // ... 
    } 
    } 

} 

ユーザーがBoundFuncインターフェースを遵守しなければなりません。

+0

私はTSのドキュメントでそれを見つけることができませんでした!ありがとう – Olegzandr

+0

しかし、私は質問で説明した状況のためにこれが動作するのでしょうか?この関数(boundTransportFn)は、私がアクセスできないユーザ提供の関数です。言い換えれば、私はboundTransportFn宣言へのアクセス権を持っていない、私はすべてのパラメータです。 – Olegzandr

+0

私はあなたの質問を理解するか分からない。あなたのコードの 'boundTransportFn'関数に型を追加するのは、' Function'という言葉をあなたのコードで宣言したインターフェースの名前に置き換えることだけです。あなたはあなたのコードに多くの文脈を提供しませんが、 'boundTransportFn'をパラメータとして受け取るメソッド内にあると仮定すると、あなたのメソッドを呼び出すすべてのユーザは、正確に型付けされたパラメータを提供する必要があります。意味がありますか? – AngularChef

関連する問題