perf(theme): improve types (#244)

This commit is contained in:
pengzhanbo 2024-10-02 01:29:49 +08:00 committed by GitHub
parent 5d112d0e37
commit 341267b37e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 8 additions and 7 deletions

View File

@ -34,7 +34,7 @@ type Frontmatter<T extends FrontmatterType = 'page'> = T extends 'home'
export interface Data<T extends FrontmatterType = 'page'> {
theme: ThemeLocaleDataRef<PlumeThemeLocaleData>
page: PageDataRef<PlumeThemePageData>
frontmatter: PageFrontmatterRef<Frontmatter<T>>
frontmatter: PageFrontmatterRef<Frontmatter<T> & Record<string, unknown>>
lang: Ref<string>
site: SiteLocaleDataRef
isDark: Ref<boolean>
@ -43,7 +43,7 @@ export interface Data<T extends FrontmatterType = 'page'> {
export function useData<T extends FrontmatterType = 'page'>(): Data<T> {
const theme = useThemeLocaleData()
const page = usePageData<PlumeThemePageData>()
const frontmatter = usePageFrontmatter<Frontmatter<T>>()
const frontmatter = usePageFrontmatter<Frontmatter<T> & Record<string, unknown>>()
const site = useSiteLocaleData()
const isDark = useDarkMode()
const lang = usePageLang()

View File

@ -60,7 +60,7 @@ export async function preparedBlogData(
< getTimestamp(next.frontmatter.createTime as Date || next.date)
? 1
: -1,
) as Page<PlumeThemePageData, PlumeThemePostFrontmatter>[]
) as Page<PlumeThemePageData, PlumeThemePostFrontmatter & Record<string, unknown>>[]
const blogData: PlumeThemeBlogPostData = pages.map((page) => {
const tags = page.frontmatter.tags

View File

@ -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

View File

@ -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
}
}>

View File

@ -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 {