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' }