evenchange4 / react-intl.macro

Extract react-intl messages with babel-plugin-macros.
MIT License
37 stars 6 forks source link

Typescript: allow defineMessages(... as const) syntax #104

Open langpavel opened 4 years ago

langpavel commented 4 years ago

This PR fixes edge case with as const typescript type modifier like this:

import { defineMessages } from 'react-intl.macro';

const msg = defineMessages({
    name: { id: 'common.name', defaultMessage: 'Name' },
    surname: { id: 'common.surname', defaultMessage: 'Surname' },
} as const);

export default messages;

This is very useful in IDE, you can see id and defaultMessage by hovering prop: image

BTW I'm using this type definitions, I will add enhanced .d.ts to new PR

declare module 'react-intl.macro' {
    interface MessageDescriptor {
        readonly id: string;
        readonly defaultMessage: string;
        readonly description?: string;
    }

    interface Messages {
        readonly [K: string]: MessageDescriptor;
    }

    export function defineMessages<T extends Messages>(messages: T): T;
}
codecov[bot] commented 4 years ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 91.93%. Comparing base (f528cc9) to head (f708a2b).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #104 +/- ## ========================================== + Coverage 91.80% 91.93% +0.13% ========================================== Files 8 8 Lines 61 62 +1 Branches 10 11 +1 ========================================== + Hits 56 57 +1 Misses 5 5 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

langpavel commented 4 years ago

@evenchange4 Please, look at this. It will be really helpful to me. I don't want publish new fork. Thanks!

langpavel commented 4 years ago

@evenchange4 please, can you merge?

langpavel commented 3 years ago

@evenchange4 Can you review this, please?