contentlayerdev / contentlayerdev/contentlayer
Incorrect typing for `enum` on computed fields
- 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
Mô tả
currently when defining a computed field of type `enum` like this:
```js
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:
```ts
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.git`
- `cd issue-contentlayer-computed-field-types`
- `npm i`
- `npm run generate`
- `cat .contentlayer/generated/types.d.ts`
Hướng dẫn đóng góp
Hướng nghiên cứu
Start with packages/@contentlayer/core/src/generation/generate-types.ts, especially the area linked in the issue, and reproduce the problem with the listed npm install, npm run generate, and cat commands. Verify that the generated .contentlayer/generated/types.d.ts gives the computed locale field the 'en' | 'de' type instead of the literal enum type.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- typescript
- Lĩnh vực
- tooling
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 55/100