[英]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.