Open11

Astroをv2に上げる

hbsnowhbsnow

あと全体的に日本語の内容は古いものを参照していることが多い。どうもAstroはそういう事が多くて、基本的には英語をみたほうがいいと思う

hbsnowhbsnow

自動生成されるファイルでエラーになっていたので、"@typescript-eslint/triple-slash-reference": "off", を追加した

hbsnowhbsnow

zodで型定義するので、これまでobjectに対してas constしてたけど、配列つくってas constしてobjectに対してRecordつくってあげるように修正した

const blogCollection = defineCollection({
  schema: z.object({
    tags: z.array(z.enum(tagName)),
  }),
});

上記みたいに書きたいので

export const tagName = ["foo"] as const;

export type TagType = (typeof tagName)[number];

export const tagList: Record<TagType, string> = {
  foo: "foo",
}

こうした。

もともとはこんな感じだった

export const tagList = {
  foo: "foo",
} as const;

export type TagType = Array<keyof typeof tagList>[number];
hbsnowhbsnow
const { entry } = Astro.props as {
  entry: CollectionEntry<"blog">;
};

いい感じの型定義がなかったのでこうしたが……

hbsnowhbsnow

Frontmatterのところの型定義が重複していてちょっと気持ち悪いが、mdからLayoutを呼び出すとこうなる……