簡體   English   中英

Typescript generics 返回類型問題

[英]Typescript generics return type issues

我在我的項目中使用 typescript generics 但它似乎效果不佳。

例子:

interface Test<T, P> {
  a?: (v: T) => P
  b?: (v: P) => void
}

const fn1 = <T, P>(_config: Test<T, P>) => {}

fn1({
  a: (p) => 1,
  b: (p) => {},
})

我認為params 'a'類型就像:

Test<unknown, number>.a?: ((v: unknown) => number) | undefined

但實際上:

Test<unknown, unknown>.a?: ((v: unknown) => unknown) | undefined

我不知道為什么,有人可以幫助我嗎? 謝謝。

由於您沒有在此行定義類型: b: (p) => {}

然后 TS 無法推斷 P 的類型,即使您在上述a的定義中返回它。

這是因為在聯合中,未知吸收了一切。

對於 (a) 中的 P,TypeScript 推斷出一種“數字”,但是對於 (b) 中的 P,它推斷出一種“未知”,就像它對於 (a) 中的 T 所做的那樣。

因此,P 會導致“數字 | 未知”(不是您預期的“數字 | 未定義”),這只會導致“未知”。

如果您在此處參考 TypeScript 文檔,您會發現:

// 在聯合中,未知數吸收一切

P 型 = 未知 | 數字; // 未知

暫無
暫無

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

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