import { TrackedSubject } from "./tracked-subject"; import { TrackedComputedSubject } from "./tracked-computed-subject"; import { TrackedArray } from "./tracked-array"; import { TrackedEntity } from "./tracked-entity"; // Technically I think this would include TrackedArray now since TrackedArray no longer inherits from TrackedSubject // TODO: Use interface instead of Union Type. TrackedArray basically matches the interface of TrackedSubject anyway export type Trackable = TrackedSubject | TrackedComputedSubject; export type TrackedTypeForValue = T extends (infer K)[] ? TrackedArray : (TrackedSubject | TrackedEntity)