diff --git a/theme/src/client/composables/data.ts b/theme/src/client/composables/data.ts index 5637fa277..3a78337b4 100644 --- a/theme/src/client/composables/data.ts +++ b/theme/src/client/composables/data.ts @@ -34,7 +34,7 @@ type Frontmatter = T extends 'home' export interface Data { theme: ThemeLocaleDataRef page: PageDataRef - frontmatter: PageFrontmatterRef> + frontmatter: PageFrontmatterRef & Record> lang: Ref site: SiteLocaleDataRef isDark: Ref @@ -43,7 +43,7 @@ export interface Data { export function useData(): Data { const theme = useThemeLocaleData() const page = usePageData() - const frontmatter = usePageFrontmatter>() + const frontmatter = usePageFrontmatter & Record>() const site = useSiteLocaleData() const isDark = useDarkMode() const lang = usePageLang() diff --git a/theme/src/node/prepare/prepareBlogData.ts b/theme/src/node/prepare/prepareBlogData.ts index 752bf67e0..11fc483c6 100644 --- a/theme/src/node/prepare/prepareBlogData.ts +++ b/theme/src/node/prepare/prepareBlogData.ts @@ -60,7 +60,7 @@ export async function preparedBlogData( < getTimestamp(next.frontmatter.createTime as Date || next.date) ? 1 : -1, - ) as Page[] + ) as Page>[] const blogData: PlumeThemeBlogPostData = pages.map((page) => { const tags = page.frontmatter.tags diff --git a/theme/src/shared/frontmatter/friends.ts b/theme/src/shared/frontmatter/friends.ts index da9c3cbaa..304144e15 100644 --- a/theme/src/shared/frontmatter/friends.ts +++ b/theme/src/shared/frontmatter/friends.ts @@ -1,4 +1,5 @@ import type { SocialLink } from '../base.js' +import type { PlumeNormalFrontmatter } from './normal.js' export interface FriendsItem { name: string @@ -17,7 +18,7 @@ export interface FriendGroup { list?: FriendsItem[] } -export interface PlumeThemeFriendsFrontmatter { +export interface PlumeThemeFriendsFrontmatter extends PlumeNormalFrontmatter { friends: boolean title?: string description?: string diff --git a/theme/src/shared/frontmatter/normal.ts b/theme/src/shared/frontmatter/normal.ts index 5d4f037fb..3ff752ded 100644 --- a/theme/src/shared/frontmatter/normal.ts +++ b/theme/src/shared/frontmatter/normal.ts @@ -1,6 +1,6 @@ import type { PageFrontmatter } from 'vuepress' -export interface PlumeNormalFrontmatter extends PageFrontmatter { +export type PlumeNormalFrontmatter = PageFrontmatter<{ /** * @deprecated @@ -51,4 +51,4 @@ export interface PlumeNormalFrontmatter extends PageFrontmatter { * @deprecated 使用 `externalLinkIcon` 代替 */ externalLink?: boolean -} +}> diff --git a/theme/src/shared/frontmatter/post.ts b/theme/src/shared/frontmatter/post.ts index a73df9abc..c53c51399 100644 --- a/theme/src/shared/frontmatter/post.ts +++ b/theme/src/shared/frontmatter/post.ts @@ -1,4 +1,4 @@ -import type { BlogPostCover } from 'vuepress-theme-plume' +import type { BlogPostCover } from '../blog.js' import type { PlumeThemePageFrontmatter } from './page.js' export interface PlumeThemePostFrontmatter extends PlumeThemePageFrontmatter {