有人可以告诉我如何获取对象的值作为类型吗?我有这样的东西:
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;
谢谢
答案 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);