`babel-plugin-react-css-modules` Typescript Type Checking











up vote
0
down vote

favorite












I am using babel-plugin-react-css-modules. It add the styleName property to HTML elements. Typescript doesn't recognize this property. I am pretty sure I need to extend something but nothing I have tried has worked.



I have tried declaring an Element in a '.d.ts' file to do declaration merging but I must be doing something wrong.



interface Element {
styleName: string;
}

export const Wrapper: React.FC<IWrapperProps> = ({ children, style }) => (
<div styleName="wrapper" style={style}>
{children}
</div>
);


UPDATE:



.d.ts not working










share|improve this question




























    up vote
    0
    down vote

    favorite












    I am using babel-plugin-react-css-modules. It add the styleName property to HTML elements. Typescript doesn't recognize this property. I am pretty sure I need to extend something but nothing I have tried has worked.



    I have tried declaring an Element in a '.d.ts' file to do declaration merging but I must be doing something wrong.



    interface Element {
    styleName: string;
    }

    export const Wrapper: React.FC<IWrapperProps> = ({ children, style }) => (
    <div styleName="wrapper" style={style}>
    {children}
    </div>
    );


    UPDATE:



    .d.ts not working










    share|improve this question


























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I am using babel-plugin-react-css-modules. It add the styleName property to HTML elements. Typescript doesn't recognize this property. I am pretty sure I need to extend something but nothing I have tried has worked.



      I have tried declaring an Element in a '.d.ts' file to do declaration merging but I must be doing something wrong.



      interface Element {
      styleName: string;
      }

      export const Wrapper: React.FC<IWrapperProps> = ({ children, style }) => (
      <div styleName="wrapper" style={style}>
      {children}
      </div>
      );


      UPDATE:



      .d.ts not working










      share|improve this question















      I am using babel-plugin-react-css-modules. It add the styleName property to HTML elements. Typescript doesn't recognize this property. I am pretty sure I need to extend something but nothing I have tried has worked.



      I have tried declaring an Element in a '.d.ts' file to do declaration merging but I must be doing something wrong.



      interface Element {
      styleName: string;
      }

      export const Wrapper: React.FC<IWrapperProps> = ({ children, style }) => (
      <div styleName="wrapper" style={style}>
      {children}
      </div>
      );


      UPDATE:



      .d.ts not working







      typescript babel babel-plugin-react-css-modules






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 20 at 9:09

























      asked Nov 20 at 4:22









      hipstersmoothie

      73




      73
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          Since you're in a module (it has an export), you're working with a separate scope from the global scope - so you're just creating an interface named Element that's separate from the global declaration.



          I'd place the interface in a separate file with no exports/imports (augmentations.d.ts) and add that to your tsconfig.json.






          share|improve this answer





















          • I tried that too and it didn't work :(
            – hipstersmoothie
            Nov 20 at 9:04











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386183%2fbabel-plugin-react-css-modules-typescript-type-checking%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          0
          down vote













          Since you're in a module (it has an export), you're working with a separate scope from the global scope - so you're just creating an interface named Element that's separate from the global declaration.



          I'd place the interface in a separate file with no exports/imports (augmentations.d.ts) and add that to your tsconfig.json.






          share|improve this answer





















          • I tried that too and it didn't work :(
            – hipstersmoothie
            Nov 20 at 9:04















          up vote
          0
          down vote













          Since you're in a module (it has an export), you're working with a separate scope from the global scope - so you're just creating an interface named Element that's separate from the global declaration.



          I'd place the interface in a separate file with no exports/imports (augmentations.d.ts) and add that to your tsconfig.json.






          share|improve this answer





















          • I tried that too and it didn't work :(
            – hipstersmoothie
            Nov 20 at 9:04













          up vote
          0
          down vote










          up vote
          0
          down vote









          Since you're in a module (it has an export), you're working with a separate scope from the global scope - so you're just creating an interface named Element that's separate from the global declaration.



          I'd place the interface in a separate file with no exports/imports (augmentations.d.ts) and add that to your tsconfig.json.






          share|improve this answer












          Since you're in a module (it has an export), you're working with a separate scope from the global scope - so you're just creating an interface named Element that's separate from the global declaration.



          I'd place the interface in a separate file with no exports/imports (augmentations.d.ts) and add that to your tsconfig.json.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 20 at 4:43









          Daniel Rosenwasser

          7,62132038




          7,62132038












          • I tried that too and it didn't work :(
            – hipstersmoothie
            Nov 20 at 9:04


















          • I tried that too and it didn't work :(
            – hipstersmoothie
            Nov 20 at 9:04
















          I tried that too and it didn't work :(
          – hipstersmoothie
          Nov 20 at 9:04




          I tried that too and it didn't work :(
          – hipstersmoothie
          Nov 20 at 9:04


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386183%2fbabel-plugin-react-css-modules-typescript-type-checking%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          Marschland

          Dieringhausen