2017-10-28 24 views
0

私は、パラメータとして独自の型の要素を持つ配列をとる再帰型のtypescript関数ファミリを記述しようとしています。Typescript - 再帰関数型

function example(parameter:number, path: {(parameter:number, path:{/*what do I put here?!*/}[]):boolean;}[]) : boolean 
{ 
    return false; 
} 

これは私がして関数を呼び出すことができ意味:

let result = example(123, [example, example, anotherexample]); 

私がこだわっているところ/「私はここに入れてください」の部分パスがあります。何らかの形で関数型全体をtypedefに入れて、可読性を向上させたいと思います。あなたは、明示的exampleの種類を宣言するには:

答えて

1

あなたは、インターフェイスとしてexampleの型を宣言することができますので、あなたはpath用タイプでそれを参照することができます。

interface Example { 
    (parameter: number, path: Example[]): boolean 
} 

function example(parameter: number, path: Example[]): boolean { 
    return false; 
} 

demo on TypeScript Playground

UPDを

const example : Example = function (parameter: number, path: Example[]): boolean { 
    return false; 
} 

これはタイプエラーを警告しますが、それは今や定数であることに注意してください。その宣言の前にそれを参照することはできません。インタフェースの詳細については、https://www.typescriptlang.org/docs/handbook/interfaces.html

+0

非常に高く評価されています。私はtypescriptを初めて使うので、関数型用のインターフェイスを書く方法がわからず、あなたの答えが私を大きく助けました。 小規模なフォローアップ:このタイプに基づいて「関数の例」を宣言し定義する方法はありますか? (多分それは価値があるもの) 'let例:Step =/*今は何ですか? */' – Moritz