1
在我的代碼中,我想返回一個高階函數並將我的參數類型傳遞給返回函數。最小縮減代碼如下所示。當返回函數時,流型不保留通用函數參數
function curry<A, B: A>(a: A): (b: B) => void {
return() => {}
}
curry(123)("123") // expected error but not
我想知道爲什麼B
不流向返回函數。看起來返回函數的類型爲(b: any) => void
。
我知道在這個例子中,我可以改變綁定到簽名的類型,如(a: A) => (b: A) => void
。但是我的真實場景更復雜,需要幻像類型作爲綁定,看起來像上面的B
。
所以問題是,B
實例化到什麼類型?我可以對返回函數的參數位置做一個類型參數流嗎?論證位置中的類型能否影響實際論證的類型推斷?
感謝您回答我的第一個問題。但我仍然想知道爲什麼'void'被推斷出來,因爲'void'不是'number'的子類型。你能否詳細說明「類型推理如何工作」?我不知道我在哪裏可以找到這種情況的良好參考。 –