babel-plugin-typescript-to-proptypes icon indicating copy to clipboard operation
babel-plugin-typescript-to-proptypes copied to clipboard

Type import from react alongside default import causes the plugin to not output prop types

Open juzerzarif opened this issue 4 years ago • 1 comments

Hi, thanks for all your work on this - it's an awesome plugin!

I'm running into an issue where if I have a type import from react separate from the default import like so

import React from 'react';
import type { HTMLAttributes, MouseEventHandler } from 'react';

The plugin will not output any propTypes for the component. Switching the order of the imports will fix the issue:

import type { HTMLAttributes, MouseEventHandler } from 'react';
import React from 'react';

Did a little bit of digging and it looks like the second import (the type import here) overrides the default import found from the first import here: https://github.com/milesj/babel-plugin-typescript-to-proptypes/blob/25b74f3776629d898afe3be07e1da523a0da30c1/src/index.ts#L133-L137

Which ends up short circuiting the plugin execution: https://github.com/milesj/babel-plugin-typescript-to-proptypes/blob/25b74f3776629d898afe3be07e1da523a0da30c1/src/index.ts#L163-L166

My first thought for a fix would be to preserve that default import from react by only assigning on L136 if state.reactImportedName is falsy. But obviously I'm not intimately familiar with the rest of the codebase so not sure if that causes any unwanted side effects somewhere else 😅.

Please let me know if you have any pointers for a fix - I'd be happy to put up a PR 😄.

juzerzarif avatar Oct 21 '21 22:10 juzerzarif

We can confirm that we have the same issue. No prop types generated when switching to v2.

emmenko avatar Nov 09 '21 16:11 emmenko