Typescript 使用对象道具作为TS中另一个对象的关键点
我正在尝试导出一个具有有效类型的对象,并在此基础上创建一个类型。工作如期进行。这里的问题是选项接口不接受对象键作为键名,即使它们是字符串Typescript 使用对象道具作为TS中另一个对象的关键点,typescript,types,typescript-typings,Typescript,Types,Typescript Typings,我正在尝试导出一个具有有效类型的对象,并在此基础上创建一个类型。工作如期进行。这里的问题是选项接口不接受对象键作为键名,即使它们是字符串 导出常量SortValues={ 更新:“更新”, 老年人:“老年人”, NAME_ASC:'NAME_ASC', NAME_DESC:'NAME_DESC', } 接口选项{ 关键词:T; 值:字符串; } 类型SortValuesType=SortValues类型的键; //键入SortValuesType='NEWER'|'OLDER'|'NAME_AS
导出常量SortValues={
更新:“更新”,
老年人:“老年人”,
NAME_ASC:'NAME_ASC',
NAME_DESC:'NAME_DESC',
}
接口选项{
关键词:T;
值:字符串;
}
类型SortValuesType=SortValues类型的键;
//键入SortValuesType='NEWER'|'OLDER'|'NAME_ASC'|'NAME_DESC';//这也不行。
导出常量选项:数组=[
{key:SortValues.NEWER,value:'Mais novos'},
{key:SortValues.OLDER,值:'Mais antigos'},
{key:SortValues.NAME_ASC,值:'A-Z'},
{key:SortValues.NAME_DESC,值:'Z-A'},
];
我得到一个错误“Type'string'不可分配给Type'“NEWER”|“OLDER”|“NAME_ASC”|“NAME_DESC”.”“
,位于选项的键属性上
此外,如果我将SortValues定义为枚举,它也可以工作,但是这会给我带来一些其他问题,所以我需要将其导出为对象
这里是一个片段
您需要使用
as const
断言。即使在常量定义中,属性值也会加宽,因此较新的
类型将是字符串
而不是字符串文字类型“较新的”
。as const
将指示编译器保留字符串文本类型
export const SortValues = {
NEWER: 'NEWER',
OLDER: 'OLDER',
NAME_ASC: 'NAME_ASC',
NAME_DESC: 'NAME_DESC',
} as const
这正是我需要的。谢谢