Я большой поклонник стиля без очков и комбинации рекомпозиций, lodash / fp и реагирования.Недавно перешел на машинописный текст и с трудом опускаю дополнительную упаковку функций общими вещами. Например:
import * as QueryAllExercises from '@ease/api/GraphQL/queryGetAllExercises.gql';
import { getOr } from 'lodash/fp';
import { graphql } from 'react-apollo';
import { compose } from 'recompose';
import { Exercise } from 'src/Exercises';
interface WithExercises {
exercises: Exercise[];
};
const withExercises = <TOutter extends object>(Comp: React.ComponentType<TOutter & WithExercises>) => compose<TOutter & WithExercises, TOutter>(
graphql(
QueryAllExercises,
{
options: {
fetchPolicy: 'cache-and-network',
},
props: resp => ({ exercises: getOr([], 'data.listExercises.items', resp) }),
},
),
)(Comp);
export default withExercises;
Интересно, есть ли другой способ напечатать это, без функции дополнительной стрелки, что-то вроде (которыйочевидно не работает):
import * as QueryAllExercises from '@ease/api/GraphQL/queryGetAllExercises.gql';
import { getOr } from 'lodash/fp';
import { graphql } from 'react-apollo';
import { compose } from 'recompose';
import { Exercise } from 'src/Exercises';
interface WithExercises {
exercises: Exercise[];
};
const withExercises = <TOutter>compose<TOutter & WithExercises, TOutter>(
graphql(
QueryAllExercises,
{
options: {
fetchPolicy: 'cache-and-network',
},
props: resp => ({ exercises: getOr([], 'data.listExercises.items', resp) }),
},
),
);
export default withExercises;