2017-10-28 345 views
0

我想寫一個遞歸的打字稿家庭的函數,它需要一個數組與它自己的類型的元素作爲參數。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中,以提高可讀性。

回答

1

可以申報example類型的接口,所以你可以參考它在類型path

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

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

demo on TypeScript Playground

UPD:顯式聲明的example類型,你可以這樣寫:

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

這會警告類型錯誤,但請注意它現在是一個常數,所以你不能在聲明之前引用它。有關接口的更多信息,請查看https://www.typescriptlang.org/docs/handbook/interfaces.html

+0

非常感謝。我對打字稿很陌生,所以我不確定如何爲一種功能類型編寫界面,而且您的答案對我非常有幫助。 小後續:有沒有一種方法來基於這種類型來聲明和定義「函數示例」? (也許更麻煩它是值得的)。 '讓示例:步驟=/*現在什麼? * /' – Moritz