چگونه نوع union را به enum در تایپاسکریپت تبدیل کنیم؟


من میخواهم نوع اتحاد را به enum یا شبیه enum در تایپاسکریپت تبدیل کنم

با ذهنم درست کار نمیکند.

از اینکه سوال من را خواندید متشکرم.

type status = 'start' | 'loading' | 'stop';

class Loading {
    static staticStatus: status;
}
Loading.staticStatus.start; // i want to use.

یا

type status = 'start' | 'loading' | 'stop';

enum statusEnum = ?????;

class Loading {
    static staticStatus = statusEnum;
}
Loading.staticStatus.start; // i want to use.

متأسفم که سوالاتم را با جزئیات ننوشتم.

const schema ={
 status: Joi.string()
        .required()
        .valid(
            'start',
            'loading',
            'stop',
        )
}

// type setStatusType =  'start' | 'loading' | 'stop' is like this
type setStatusType = PickType<Joi.extractType<typeof schema>, 'status'>; 

enum statusEnum = ?????;

class Loading {
    static staticStatus = statusEnum;

    public setLoading() {
    this.status = Loading.staticStatus.loading // I want to use this.
    }
}

پس من میخواهم نوع اتحادیه را به enum تبدیل کنم...

پاسخ شماره ۱

مطمئن نیستم چگونه میتوان یک enum از یک Union گرفت، اما اگر به هر دو نیاز دارید، به راحتی میتوانید بالعکس انجام دهید.

enum Status {
 start,
 loading,
 stop
}

type StatusAsUnion = keyof typeof Status

امیدوارم این مفید بوده باشد