Incorrect typing for `enum` on computed fields
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 55/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Estagnada
- Stack de tecnologia
- typescript
- Domínio
- tooling
Direção de pesquisa
Comece por packages/@contentlayer/core/src/generation/generate-types.ts, especialmente pela área vinculada na issue, e reproduza o problema com os comandos npm install, npm run generate e cat listados. Verifique se .contentlayer/generated/types.d.ts atribui ao campo locale calculado o tipo 'en' | 'de' em vez do tipo enum literal.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- TypeScript
- Estrelas
- 3.5k
- Forks
- 192
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de contentlayerdev/contentlayer
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 25/100
contentlayerdev/contentlayer#506 · 84 comentários · 47 reações ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Abertahelp wanted meta: never-stale needs-research
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 38/100
contentlayerdev/contentlayer#464 · 4 comentários · 9 reações ·
-
State of the project Abertameta: never-stale
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 10/100
contentlayerdev/contentlayer#429 · 49 comentários · 83 reações ·
-
meta: never-stale topic: markdown/mdx
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 42/100
contentlayerdev/contentlayer#421 · 4 reações ·
-
meta: never-stale needs-research topic: schema
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
contentlayerdev/contentlayer#420 ·
Todas as issues de contentlayerdev/contentlayer
Issues semelhantes
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
Crush Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
ElementsProject/cln-application#167 · 1 comentário · 1 reação ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Quantco/pnpm-licenses#17 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100