When defining a document with a field and computedFields child item with the same name, the computedFields field seems to be appended onto the generated type. Resulting in undesired types for the field.
I would have expected the computedFields data to overwrite the field data, both the description and the type.
For reference, I am converting a comma separated string of tags into a parsed array via the computedFields. Here is an example of my document definition:
export const Blog = defineDocumentType(() => ({
name: "Blog",
filePathPattern: `blog/**/*.md`,
fields: {
tags: {
type: "string",
description: "Comma separated listing of tags",
required: false,
},
},
computedFields: {
tags: {
description: "new description",
type: "list",
of: { type: "string" },
resolve: (item) =>
item?.tags?.split(",")?.map((tag) => tag.trim()) ?? undefined,
},
},
}));
Generates these types (simplified for the example):
/** Document types */
export type Blog = {
/** Comma separated listing of tags */
tags?: string | undefined
/** new description */
tags: list
}
Extra note: It also seems like the computedFields children do not support list types, or it may be a bug?
When defining a document with a
fieldandcomputedFieldschild item with the same name, thecomputedFieldsfield seems to be appended onto the generated type. Resulting in undesired types for the field.I would have expected the
computedFieldsdata to overwrite thefielddata, both thedescriptionand thetype.For reference, I am converting a comma separated string of
tagsinto a parsed array via thecomputedFields. Here is an example of my document definition:Generates these types (simplified for the example):
Extra note: It also seems like the
computedFieldschildren do not supportlisttypes, or it may be a bug?