TypeScript 装饰器,获取值的类型
TypeScript decorators, get type of value
这是我的代码。
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]
获取类型,但它是未定义的。我一定会喜欢并标记正确答案。
我不确定 this playground 是否是您要查找的内容,但它似乎可以满足您的要求。
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);
}
});
}
这是我的代码。
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]
获取类型,但它是未定义的。我一定会喜欢并标记正确答案。
我不确定 this playground 是否是您要查找的内容,但它似乎可以满足您的要求。
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);
}
});
}