簡體   English   中英

打字稿-遞歸函數類型

[英]Typescript - Recursive Function Type

我正在嘗試編寫一個遞歸的打字稿函數系列,該函數系列將具有其自身類型的元素的數組作為參數。

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的類型聲明為接口,因此可以在path的類型中引用它:

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

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

TypeScript Playground上的演示

UPD:要明確聲明example的類型,可以這樣編寫:

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

這將警告類型錯誤,但請注意,它現在是一個常量,因此您將無法在聲明它之前引用它。 有關接口的更多信息,請查看https://www.typescriptlang.org/docs/handbook/interfaces.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM