Incorrect typing for `enum` on computed fields
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 55/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- typescript
- Lĩnh vực
- tooling
Hướng nghiên cứu
Bắt đầu với packages/@contentlayer/core/src/generation/generate-types.ts, đặc biệt là khu vực được liên kết trong issue, và tái hiện vấn đề bằng các lệnh npm install, npm run generate và cat được liệt kê. Xác minh rằng .contentlayer/generated/types.d.ts gán cho trường locale được tính toán kiểu 'en' | 'de' thay vì kiểu enum literal.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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
- Ngôn ngữ chính
- TypeScript
- Star
- 3.5k
- Fork
- 192
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của contentlayerdev/contentlayer
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
contentlayerdev/contentlayer#506 · 84 bình luận · 47 reaction ·
-
Poor/broken monorepo DX: can't specify .contentlayer/ output path, no docs for custom config path Đang mởhelp wanted meta: never-stale needs-research
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 38/100
contentlayerdev/contentlayer#464 · 4 bình luận · 9 reaction ·
-
State of the project Đang mởmeta: never-stale
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 10/100
contentlayerdev/contentlayer#429 · 49 bình luận · 83 reaction ·
-
meta: never-stale topic: markdown/mdx
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 42/100
contentlayerdev/contentlayer#421 · 4 reaction ·
-
meta: never-stale needs-research topic: schema
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
contentlayerdev/contentlayer#420 ·
Tất cả issue của contentlayerdev/contentlayer
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
mksglu/context-mode#1200 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
anthropics/claude-code#96687 ·
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
AOSSIE-Org/DebateAI#582 · 2 bình luận ·