From b6b512bae48ad584b88f757ff3e69c233d903bef Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Sat, 9 Mar 2024 12:05:33 +0100 Subject: [PATCH] Remove type annotation on CH export Removing the type annotation on `CH`, means TypeScript infers its type. This type can then be used by the MDX language server to provide type safe JSX inside MDX files. The `contentlayer` example was updated to leverage MDX language server for type safety. For now type safety only happens in the editor, there is no CLI support yet. There is a type error in `examples/contentlayer/posts/two.mdx`. --- examples/contentlayer/tsconfig.json | 4 ++++ examples/contentlayer/types.ts | 9 +++++++++ packages/mdx/src/components.tsx | 3 +-- 3 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 examples/contentlayer/types.ts diff --git a/examples/contentlayer/tsconfig.json b/examples/contentlayer/tsconfig.json index 717344bd..51db4f93 100644 --- a/examples/contentlayer/tsconfig.json +++ b/examples/contentlayer/tsconfig.json @@ -19,8 +19,12 @@ "contentlayer/generated": ["./.contentlayer/generated"] } }, + "mdx": { + "checkMdx": true + }, "include": [ "next-env.d.ts", + "**/*.mdx", "**/*.ts", "**/*.tsx", ".contentlayer/generated" diff --git a/examples/contentlayer/types.ts b/examples/contentlayer/types.ts new file mode 100644 index 00000000..5b5824b9 --- /dev/null +++ b/examples/contentlayer/types.ts @@ -0,0 +1,9 @@ +import { CH } from "@code-hike/mdx/components" + +declare global { + interface MDXProvidedComponents { + CH: typeof CH + } +} + +export {} diff --git a/packages/mdx/src/components.tsx b/packages/mdx/src/components.tsx index 2c7f63f4..eebcaed1 100644 --- a/packages/mdx/src/components.tsx +++ b/packages/mdx/src/components.tsx @@ -14,7 +14,6 @@ import { } from "./mdx-client/annotations" import { Preview } from "./mdx-client/preview" import { InlineCode } from "./mdx-client/inline-code" -import type { MDXComponents } from "mdx/types" import { useStaticToggle, StaticToggle, @@ -38,7 +37,7 @@ export { StaticToggle, } -export const CH: MDXComponents = { +export const CH = { Code, Section, SectionLink,