Я не уверен, что эта игровая площадка - это то, что вы ищете, но кажется, что она может делать то, что вы хотите.
function observableDecorator<
T extends Record<string, any>,
K extends keyof T,
V = T extends Record<string, infer X> ? X : never
>(target: T, key: K) {
const observable = ko.observable<V>(target[key]);
Object.defineProperty(target, key, {
get() {
this[key]._ko_util_id = random;
this.obs = observable<V>(); // or typeof random?
},
set(value: V) {
observable(value);
}
});
}