enum SomeEnum {
a = 10
b = 20
}
const n: number = 20;
const enumValue: SomeEnum = ???;
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以转换n为enumValue,而不必为每个枚举类型编写 switch-case。
鉴于一些enum MyEnum {ONE, TWO},我想编写一个名为 like
useMyFun(MyEnum, MyEnum.ONE);
Run Code Online (Sandbox Code Playgroud)
我没有正确输入它。现在我有如下内容
type StringKeyOf<T> = Extract<keyof T, string>;
type EnumNumber<E> = Record<StringKeyOf<E>, number>;
function useMyFun<E extends EnumNumber<E>, V extends number=number> (
anEnum: E,
initialState: number) : {value: V, setValue: (v: V) => void}
{
const [value, setValue] = useState<V>(initialState as V);
//.... more stuff using both arguments omitted
return {value, setValue};
}
Run Code Online (Sandbox Code Playgroud)
这是一个 react-hook,但这并不重要,因为编译它所需的只是一个虚拟对象
function useState<V>(initialState: V) {
const result: [V, (v: V) => void] = [initialState, v => { }];
return …Run Code Online (Sandbox Code Playgroud)