如何在打字稿中获取对象值作为类型?

时间:2020-03-15 08:43:52

标签: javascript reactjs typescript

有人可以告诉我如何获取对象的值作为类型吗?我有这样的东西:

const MY_CONST = Object.freeze({
     main: 'website' as 'website',
     admin: 'backoffice' as 'backoffice'
});

然后我有一个接受这些值之一的函数

const myFunc = (channel: MY_TYPE): MY_TYPE {
    // something
};

基本上,我们如何从对象中提取值以具有类似的内容,而无需手动从对象中写入每个属性?

type MY_TYPE = MY_CONST.main | MY_CONST.admin;

谢谢

1 个答案:

答案 0 :(得分:0)

可能是一种更为简洁的方法,但是您可以使用keyof typeof MY_CONST获取对象的键,并在MY_CONST类型上查找这些键:

type MY_TYPE = typeof MY_CONST[keyof typeof MY_CONST];

还请注意,当您拥有许多属性时,在对象上使用as const比在每个属性上使用as容易:

const MY_CONST = Object.freeze({
     main: 'website',
     admin: 'backoffice'
} as const);