我正在嘗試在 typscript 中創建一個偽管道。這個想法是我會有一個回傳一個物件的函式。然后我會將這個物件傳遞給可以處理這個物件的其他函式。
函式簽名將是這樣的:
type FirstFunc<T> = () => T;
type Pipeline<T> = ((obj: T) => T)[]
const objPipeLine<T> = (firstFunc: FirstFunc<T>, pipeline: Pipeline<T>): T
但我不想為這個函式提供泛型。我希望它知道第一個函式將回傳什么型別的物件并將其用作我的 T 泛型。類似于隱式型別,管道中的函式應該只接受與我的第一個函式回傳的物件型別相匹配的引數。
uj5u.com熱心網友回復:
首先這個語法是錯誤的:const objPipeLine<T>.
如果你想推斷函式引數,你應該做const objPipeLine=<T>()=>{}.
只需將通用放在equal簽名后即可。
考慮這個例子:
type FirstFunc<T> = () => T;
type Pipeline<T> = ((obj: T) => T)[]
const objPipeLine = <Return,>(firstFunc: FirstFunc<Return>, pipeline: Pipeline<Return>) => {}
const result = objPipeLine(
() => ({ age: 42 }),
[(obj) => obj]
)
操場
我已經創建了Return泛型并讓 TS 推斷它。如果您將滑鼠懸停在obj中,[(obj) => obj]您會看到它被推斷為{age: number}。
如果您對打字pipeline功能感興趣,可以查看我的文章、這個答案和這個答案
uj5u.com熱心網友回復:
這就是打字稿的用途,指定它們的型別,將型別分配給我們使用 ReturnType 的回傳型別
type some=ReturnType<FirstFunc<T>>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340940.html
下一篇:X不可分配給“字串”型別的引數
