Infer 的使用

infer 只能用在條件型別中

// work
type Item<T> = T extends (infer U)[] ? U : never;
 
// wrong
type Item<T extends (infer U)[]> = U;
type MyStore = {
  getState: () => { count: number }
}
 
type State = ExtractState<MyStore> // State 推斷為 { count: number }