gribnoysup / react-yandex-maps

Yandex Maps API bindings for React
MIT License
327 stars 114 forks source link

Исправление тайпингов для withYMaps #263

Open oceandrama opened 3 years ago

oceandrama commented 3 years ago

В первую очередь, большое спасибо за библиотеку! Хотел бы предложить небольшое улучшение HOC withYMaps должен возвращать компонент с теми же пропсами, который был в него передан, но за исключением WithYMapsProps, т.к. он их сам добавляет. Сейчас приходится делать так

interface ComponentProps {...}
const Component: FC<ComponentProps & WithYMapsProps> = () => {...}

export default withYMaps(Component) as FC<ComponentProps>

А хотелось бы так

interface ComponentProps extends WithYMapsProps {...}
const ComponentNoAPI: FC<ComponentProps> = () => {...}

export default withYMaps(Component)
mmarkelov commented 3 years ago

@oceandrama привет! Спасибо за предложение. Постараюсь посмотреть

mmarkelov commented 3 years ago

@oceandrama можете собрать небольшой пример на codesandbox? По идее withYMaps возвращает компонент без дополнительных пропсов https://github.com/gribnoysup/react-yandex-maps/blob/1fc645cc27c89c87a70ce09b70c64f1561774a87/typings/index.d.ts#L188-L192

oceandrama commented 3 years ago

@mmarkelov Ну да, в этом и проблема. Предложение в том, чтобы он вырезал из пропсов WithYMapsProps, т.к. после оборачивания в HOC проп ymaps остаётся обязательным. Если написать вот так, проблема исчезнет

export function withYMaps<P>(
  component: ComponentType<P & WithYMapsProps>,
  waitForApi?: boolean,
  modules?: string[]
): ComponentType<P>;

Т.е. в результате будет компонент без WithYMapsProps