簡體   English   中英

具有固定參數但推斷返回類型的 TypeScript 函數類型

[英]TypeScript function type with fixed parameters but inferred return type

我不知道如何創建一個類型,它是一個函數,其參數已設置,但返回值是通用的,應該從提供的函數中推斷出來。

這個特殊的用例是我在數據上定義了一組選擇器。 所有選擇器都具有相同的狀態輸入,它們的輸出將是該狀態的一個屬性:

type ApplicationState = { count: number };
const selectCount = (state: ApplicationState) => state.count;

我可以通過將ApplicationState設置為每個參數的類型來簡單地做到這一點,但我試圖為選擇器本身提供一個類型:

const selectCount: ApplicationSelector = ({ count }) => count;

我試過這個:

type ApplicationSelector = (state: ApplicationState) => infer R ? R : any;

但是, 關於此文檔清楚地表明這種infer語法應該與extends一起使用,但在這種情況下,我不確定要擴展什么。

有沒有辦法讓我聲明一個帶有 set 參數參數的函數類型並推斷它的返回類型?

這是您可以使用的巧妙技巧。 創建一個包裝函數,它只限制和轉發類型。

type AppState = {count: number};

function appSelector<S extends (state: AppState) => any>(selector: S) {
    return selector;
}

const selectCount = appSelector(({count}) => count);

這是結果類型:

const selectCount: ({ count }: AppState) => number

事實上,您確實保留了自動完成和類型檢查,以檢查像({count})這樣的解構屬性。

暫無
暫無

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

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