РФ
Size: a a a
РФ
РФ
DP
NT
interface State<T> {то есть в каждом геттере могут быть использованы все объявленные геттеры
value: T;
getters<T2>(value: T, getters: T2): T2;
}
export function create<T>(options: State<T>) {но тут тоже не совсем корректно getter который параметр в функции getter работает
//
}
const temp1 = create({
value: {
x1: 0,
},
getters(value, getters) {
return {
x1Baz1: () => 200,
x1Baz2: () => getters.x1Baz1()
};
}
});
РФ
interface State<T> {то есть в каждом геттере могут быть использованы все объявленные геттеры
value: T;
getters<T2>(value: T, getters: T2): T2;
}
export function create<T>(options: State<T>) {но тут тоже не совсем корректно getter который параметр в функции getter работает
//
}
const temp1 = create({
value: {
x1: 0,
},
getters(value, getters) {
return {
x1Baz1: () => 200,
x1Baz2: () => getters.x1Baz1()
};
}
});
РФ
РФ
РФ
РФ
РФ
NT
NT
interface Foo<T> {все вроде норм, автокомплит работает, но выходит ошибка что x1Get1 и x1Get2 не часть T2 что вроде как логично
foo: T;
bar<T2>(foo: T, barV: T2): T2;
}
export function create<T>(options: Foo<T>) {}
const temp1 = create({
foo: { x1: 0 },
bar(value, getters) {
getters.x1Get1 = () => 200;
getters.x1Get2 = () => getters.x1Get1();
return getters;
}
});
РФ
const create = <T, T2 extends Record<string, (v: T) => unknown>>(value: T, getters: T2): {[g in keyof T2]: ReturnType<T2[g]>};
🦉
РФ
getters.foo()
, а использовать геттеры друг в друге напрямую🦉
NT
const create = <T, T2 extends Record<string, (v: T) => unknown>>(value: T, getters: T2): {[g in keyof T2]: ReturnType<T2[g]>};
function create<T, T2 extends Record<string, (v: T, g: T2) => any>>(value: T, getters: T2) {
return {} as any as {[g in keyof T2]: ReturnType<T2[g]>};
}
const temp1 = create({ x1: 0 }, { x1Get1: (v) => v.x1, x1Get2: (v, g) => g.x1Get1(v) });
РФ
function create<T, T2 extends Record<string, (v: T, g: T2) => any>>(value: T, getters: T2) {
return {} as any as {[g in keyof T2]: ReturnType<T2[g]>};
}
const temp1 = create({ x1: 0 }, { x1Get1: (v) => v.x1, x1Get2: (v, g) => g.x1Get1(v) });