Open TwoBee opened 2 months ago
Hi @TwoBee
The generate-typescript-typedefs
utility does not provide union types for Datasources (yet! 😄). Every Datasource is typed as string | number
by default.
In your example, you state that the color
and fontColor
properties share the same field type, which is Single Option
with a Datasource as a source. I re-created the example and I just got two number | string
types, as expected. I can assure you that Datasources are not typed by our utility.
Could it be that you initially added a self-contained source to the color
property, and then you moved it to a Datasource so that you could share it with other properties? 🤔
You can easily check it in two ways:
button
component and look for the color
property. My guess is that you'll find a hard-coded list of colors, alongside the usual Datasource binding, which is represented by the properties source: internal
and datasource_slug: [your_slug]
color
property from Datasource
to Self
? My guess is that you should see the list of colours you previously configured as a Self sourceThank you in advance 🤗
Current behavior: In my Storyblok instance I declared a Button-blok which has a color option. This option is a single-choice element which gets its data from a datasource called "Colors". This datasource containst key-value-pairs like this:
This now generates in a Button-blok to this:
Interestingly, the
fontColor
prop is also the exact same constellation and this gets generated asnumber | string
. This also happens whenever I use this Datasource anywhere else.Expected behavior: This should consistently result in a type like this:
type colors = "primary" | "secondary" | "white" | "accent" | "transparent"
Steps to reproduce:
Setup datasource
Use as data for a single-choice element
Execute type generation
npx storyblok pull-components --space={YOUR_ID} && npx storyblok generate-typescript-typedefs --sourceFilePaths ./components.{YOUR_ID}.json --destinationFilePath ./types/storyblok-component-types.d.ts
Other information: