Type of union type field

Viewed 64

I have some interface describing messages:


    interface Message1 {
        name: "message1";
        data: any;
    }
    interface Message2 {
        name: "message2";
        data: any;
    }
    type Message = Message1 | Message2;

This is auto-generated interfaces/type from JSON-schema, and I can't easily change it.

I want to access the type of message name, ie 'message1' | 'message2', like Message.type.

Does someone know how to / if we can do that?

1 Answers

You can do it as follows:

type MessageName = Message['name']

const a: MessageName = 'message1' // OK
const b: MessageName = 'message12131' // error

For more details about union types check the documentation.

Related