Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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 如何在对象键上声明类型_Typescript - Fatal编程技术网

Typescript 如何在对象键上声明类型

Typescript 如何在对象键上声明类型,typescript,Typescript,如何定义一个类型来表示其键属于类型MyType的对象?您可以使用从键的并集转到所有键都属于给定类型的对象类型。实际上,有一个预定义的映射类型,名为Record,用于执行此任务: type MyType = 'foo' | 'bar' | 'baz' const myObject = { foo: 'val1', bar: 'val2', baz: 'val3'} 您可以使用types@mast3rd3mon我们可以做得更好,如果我们已经有了一个组合,就必须重述所有键:)@TitianCer

如何定义一个类型来表示其键属于类型
MyType
的对象?

您可以使用从键的并集转到所有键都属于给定类型的对象类型。实际上,有一个预定义的映射类型,名为
Record
,用于执行此任务:

type MyType = 'foo' | 'bar' | 'baz'

const myObject = { foo: 'val1', bar: 'val2', baz: 'val3'} 

您可以使用types@mast3rd3mon我们可以做得更好,如果我们已经有了一个组合,就必须重述所有键:)@TitianCernicova Dragomir
MyType
(从我们的小代码来看)因此,将其更改为接口更有意义/class@mast3rd3mon人们通常发布的只是他们试图实现的一个小示例,我猜这是更大代码库的一部分。我怀疑OP没有考虑过简单的接口。@TitianCernicova Dragomir在我看来OP根本没有考虑过使用接口,这可能也是最好的方式,因为它还允许接口在其他文件/场所中使用。否决票的原因是什么?感谢您的反馈:)整洁,我不记得
记录
是语言的一部分,我每次都使用
{P in K}
_T@MadaraUchiha我总是倾向于不使用预定义的映射类型。。我也在考虑做
{P in K}
,写完之后,我想起了
记录
:)
type MyType = 'foo' | 'bar' | 'baz'

const myObject: Record<MyType, string> = { foo: 'val1', bar: 'val2', baz: 'val3' }
const myObject2: Record<MyType, string> = { foo: 'val1', bar: 'val2' } //error baz missing
const myObject3: Record<MyType, string> = { foo: 'val1', bar: 'val2', baz : 0 } //error baz of type number  
interface MyObjectType { foo: string, bar: string, baz: string }
const myObject: MyObjectType = { foo: 'val1', bar: 'val2', baz: 'val3' }