Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用对象道具作为TS中另一个对象的关键点_Typescript_Types_Typescript Typings - Fatal编程技术网

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

这正是我需要的。谢谢