如何在打字稿中将联合类型转换为枚举?

bug*_* kr 14 typescript

我想将联合类型转换为 enum 或像打字稿中的 enum

这对我的大脑不起作用。

感谢您阅读我的问题。

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

class Loading {
    static staticStatus: status;
}
Loading.staticStatus.start; // i want to use.
Run Code Online (Sandbox Code Playgroud)

或者

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

enum statusEnum = ?????;

class Loading {
    static staticStatus = statusEnum;
}
Loading.staticStatus.start; // i want to use.
Run Code Online (Sandbox Code Playgroud)

很抱歉我没有详细写下我的问题。

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.
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我想将联合类型转换为枚举......

Mat*_*ski 18

不确定如何enum从 a获得 anUnion但如果两者都需要,您可以轻松地进行相反的操作。

enum Status {
 start,
 loading,
 stop
}

type StatusAsUnion = keyof typeof Status
Run Code Online (Sandbox Code Playgroud)

希望这是有用的


bas*_*rat -3

最简单的解决方案是只使用string enum

enum Status {
    start = 'start',
    loading = 'loading',
    stop = 'stop'
}


class Loading {
    static staticStatus: Status;
}

Loading.staticStatus = Status.loading;
Run Code Online (Sandbox Code Playgroud)

更多的

字符串枚举