Incorrect typing for `enum` on computed fields
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 55/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- typescript
- Área
- tooling
Línea de trabajo
Comienza con packages/@contentlayer/core/src/generation/generate-types.ts, especialmente con el área enlazada en el issue, y reproduce el problema con los comandos npm install, npm run generate y cat indicados. Verifica que .contentlayer/generated/types.d.ts dé al campo locale calculado el tipo 'en' | 'de' en lugar del tipo enum literal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
currently when defining a computed field of type enum like this:
import { defineDocumentType, makeSource } from 'contentlayer/source-files'
const locales = ['en', 'de'] as const
const Post = defineDocumentType(() => {
return {
name: 'Post',
filePathPattern: 'posts/**/*.mdx',
fields: {
language: {
type: 'enum',
options: locales,
required: true
}
},
computedFields: {
locale: {
type: 'enum',
options: locales,
resolve(doc) {
return doc['language']
}
}
}
}
})
export default makeSource({
contentDirPath: 'content',
documentTypes: [Post]
})
this generates a ts schema:
export type Post = {
/** File path relative to `contentDirPath` */
_id: string
_raw: Local.RawDocumentData
type: 'Post'
language: 'en' | 'de'
/** Markdown file body */
body: Markdown
locale: enum
}
note that the regular enum field is correct, but the computed enum field is of type enum
i guess this is because of https://github.com/contentlayerdev/contentlayer/blob/dcc48858f7643f882a72a9cc5941deb36bbb1ecf/packages/%40contentlayer/core/src/generation/generate-types.ts#L120
steps to reproduce:
git clone git@github.com:stefanprobst/issue-contentlayer-computed-field-types.gitcd issue-contentlayer-computed-field-typesnpm inpm run generatecat .contentlayer/generated/types.d.ts
- Lenguaje dominante
- TypeScript
- Estrellas
- 3.5k
- Forks
- 192
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de contentlayerdev/contentlayer
-
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
contentlayerdev/contentlayer#506 · 84 comentarios · 47 reacciones ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Abiertohelp wanted meta: never-stale needs-research
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
contentlayerdev/contentlayer#464 · 4 comentarios · 9 reacciones ·
-
State of the project Abiertometa: never-stale
Dificultad 5/5 Más de una semana Aptitud para principiantes 10/100
contentlayerdev/contentlayer#429 · 49 comentarios · 83 reacciones ·
-
meta: never-stale topic: markdown/mdx
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
contentlayerdev/contentlayer#421 · 4 reacciones ·
-
meta: never-stale needs-research topic: schema
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
contentlayerdev/contentlayer#420 ·
Todos los issues de contentlayerdev/contentlayer
Issues similares
-
VerificationGate: ATTRIBUTION quote guard never matches a normal quotation (\b around the quote) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
danielmiessler/LifeOS#2234 ·
-
T: Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Mend: dependency security vulnerability untriaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100