I think it's better to separate the definitions for read-only computed and writable computed.
export interface ReadonlyComputed<T = any> extends ComputedFunctions<T> {
(): T;
}
export interface WriteableComputed<T = any> extends ReadonlyComputed<T> {
(): T;
(value: T): this;
}
export interface ReadonlyPureComputed<T = any> extends ReadonlyComputed<T> { }