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);