Javascript 如何在typescript中以键入方式获取对象值?

Javascript 如何在typescript中以键入方式获取对象值?,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,有人能告诉我如何获取对象的值作为类型吗?我有这样的想法: const MY_CONST = Object.freeze({ main: 'website' as 'website', admin: 'backoffice' as 'backoffice' }); 然后我有一个函数,它接受这些值中的一个 const myFunc = (channel: MY_TYPE): MY_TYPE { // something }; 基本上,我们如何从一个对象中提取值,使其具

有人能告诉我如何获取对象的值作为类型吗?我有这样的想法:

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;

谢谢

可能是一种更简洁的方法,但您可以使用
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);

可能是更简洁的方法,但您可以使用
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);