簡體   English   中英

如何將可選的命名參數添加到TypeScript函數參數?

[英]How can I add optional named parameters to a TypeScript function parameter?

我希望能夠定義一個接受箭頭函數作為參數的方法。 函數參數應能夠自己定義0個或多個命名參數。 我怎樣才能做到這一點?

我試過了

public doSomething(fn: () => any) {}

public doSomething(fn: (...args) => any) {}

但是當我嘗試按以下方式調用它們時,它們都拋出“提供的參數不匹配”錯誤:

doSomething((test: string) => {})

請注意,此功能的參數類型和數量可能會因每次使用情況而有所不同,因此我無法在原始方法上設置類型。

我可以在傳遞的函數中使用...args語法提供參數,但我希望能夠鍵入和命名特定的參數。

有沒有辦法做到這一點?

兩種選擇。 原因類型安全 如果您仔細閱讀下面的陳述,應該很清楚。

修復回調:

如果您的函數希望使用0個或多個參數調用該回調,則該回調必須可以接受(即具有可選參數),即

function doSomething(fn: () => any) {}

// All arguments need to optional 
doSomething((a?:string)=>{});

如同 :

function doSomething(fn: (...args:string[]) => any) {}

// All arguments need to optional 
doSomething((a?:string)=>{});

修復回調簽名:

如果要使用完全為“ N”的參數調用回調,請在簽名中指定其名稱。 回調取決於采用還是忽略這些。 例如。 此回調將忽略它們:

// Specify the number of arguments
function doSomething(fn: (ar1:string,arg2:string) => any) {}

doSomething(()=>{});

暫無
暫無

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

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