Incorrect typing for `enum` on computed fields
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- typescript
- Ambito
- tooling
Direzione di ricerca
Inizia da packages/@contentlayer/core/src/generation/generate-types.ts, in particolare dall'area collegata nell'issue, e riproduci il problema con i comandi npm install, npm run generate e cat elencati. Verifica che .contentlayer/generated/types.d.ts assegni al campo locale calcolato il tipo 'en' | 'de' invece del tipo enum letterale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- TypeScript
- Stelle
- 3.5k
- Fork
- 192
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di contentlayerdev/contentlayer
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 25/100
contentlayerdev/contentlayer#506 · 84 commenti · 47 reazioni ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Apertahelp wanted meta: never-stale needs-research
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
contentlayerdev/contentlayer#464 · 4 commenti · 9 reazioni ·
-
State of the project Apertameta: never-stale
Difficoltà 5/5 Più di una settimana Idoneità per principianti 10/100
contentlayerdev/contentlayer#429 · 49 commenti · 83 reazioni ·
-
meta: never-stale topic: markdown/mdx
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
contentlayerdev/contentlayer#421 · 4 reazioni ·
-
meta: never-stale needs-research topic: schema
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
contentlayerdev/contentlayer#420 ·
Tutte le issue di contentlayerdev/contentlayer
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
vercel-labs/just-bash#464 ·
-
looksLikeSlug() is ASCII-only, so non-Latin entity slugs (e.g. Korean) skip exact match and collapse Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
TanStack/tanstack.com#1293 ·