I'm trying to create a dictionary data structure that contains several CustomType
objects that can be associated with any string key.
I figured I could just use {[string]: CustomType}
as my dictionary type, like this:
--!strict type CustomType = { a: string, b: string } local dictionary: {[string]: CustomType} = { keyOne = { a = 'hello' }, -- should display type error keyTwo = { a = 'hello', b = 'world'} -- should be fine }
However, in the code snippet above no type error is shown in the code editor even though the b
field is missing from keyOne
. However, if I explicitly define the keys in the dictionary type definition, then it works as expected:
--!strict type CustomType = { a: string, b: string } local dictionary: {keyOne: CustomType, keyTwo: CustomType} = { keyOne = { a = 'hello' }, -- displays type error keyTwo = { a = 'hello', b = 'world'} -- is fine }
Why is this? Is there a way for me to enforce typechecking for custom types inside a dictionary for ALL string keys instead of needing to explicitily define them in the type definition? Am I going about this the wrong way?
Any help would be greatly appreciated.