diff --git a/packages/docusaurus-plugin-content-pages/package.json b/packages/docusaurus-plugin-content-pages/package.json
index 7868fa42bd..1dcbe28a54 100644
--- a/packages/docusaurus-plugin-content-pages/package.json
+++ b/packages/docusaurus-plugin-content-pages/package.json
@@ -3,6 +3,7 @@
"version": "2.0.0-alpha.61",
"description": "Pages content plugin for Docusaurus",
"main": "lib/index.js",
+ "types": "src/plugin-content-pages.d.ts",
"scripts": {
"build": "tsc",
"watch": "tsc --watch"
diff --git a/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts b/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts
new file mode 100644
index 0000000000..9eed9f0c36
--- /dev/null
+++ b/packages/docusaurus-plugin-content-pages/src/plugin-content-pages.d.ts
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Facebook, Inc. and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+declare module '@theme/MDXPage' {
+ import type {MarkdownRightTableOfContents} from '@docusaurus/types';
+
+ export type Props = {
+ readonly content: {
+ readonly frontMatter: {
+ readonly title: string;
+ readonly description: string;
+ };
+ readonly metadata: {readonly permalink: string};
+ readonly rightToc: readonly MarkdownRightTableOfContents[];
+ (): JSX.Element;
+ };
+ };
+
+ const MDXPage: (props: Props) => JSX.Element;
+ export default MDXPage;
+}
diff --git a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.js b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx
similarity index 90%
rename from packages/docusaurus-theme-classic/src/theme/MDXPage/index.js
rename to packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx
index e58723a01a..de2406baa9 100644
--- a/packages/docusaurus-theme-classic/src/theme/MDXPage/index.js
+++ b/packages/docusaurus-theme-classic/src/theme/MDXPage/index.tsx
@@ -9,8 +9,9 @@ import React from 'react';
import Layout from '@theme/Layout';
import {MDXProvider} from '@mdx-js/react';
import MDXComponents from '@theme/MDXComponents';
+import type {Props} from '@theme/MDXPage';
-function MDXPage(props) {
+function MDXPage(props: Props): JSX.Element {
const {content: MDXPageContent} = props;
const {frontMatter, metadata} = MDXPageContent;
const {title, description} = frontMatter;
diff --git a/packages/docusaurus-theme-classic/src/types.d.ts b/packages/docusaurus-theme-classic/src/types.d.ts
index 9f57acf2f0..e950646441 100644
--- a/packages/docusaurus-theme-classic/src/types.d.ts
+++ b/packages/docusaurus-theme-classic/src/types.d.ts
@@ -10,6 +10,7 @@
///
///
///
+///
declare module '@theme/AnnouncementBar' {
const AnnouncementBar: () => JSX.Element | null;
@@ -271,8 +272,6 @@ declare module '@theme/MDXComponents' {
export default MDXComponents;
}
-// TODO @theme/MDXPage
-
declare module '@theme/Navbar' {
const Navbar: () => JSX.Element;
export default Navbar;