TypeScript декораторы, получить тип значения - PullRequest
0 голосов
/ 18 марта 2020

Вот мой код.

function observableDecorator<T>(target: T, key: keyof T) {
    let observable = ko.observable<any>((target[key] as any));

    Object.defineProperty(target, key, {
        get() {
            this[key]._ko_util_id = random;
            this.obs = observable<
                HERE_IS_WERE_THE_TYPE_OF_VALUE_SHOULD_BE
            >();
        },
        set(value) {
            observable(value);
        }
    });
}

В строке 6 я хочу указать тип значения. Я пытался получить тип из target[key], но он не определен. Я обязательно буду любить и пометить правильный ответ.

1 Ответ

1 голос
/ 18 марта 2020

Я не уверен, что эта игровая площадка - это то, что вы ищете, но кажется, что она может делать то, что вы хотите.

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);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...