diff --git a/examples/with-styled-components-babel/next-env.d.ts b/examples/with-styled-components-babel/next-env.d.ts
new file mode 100644
index 000000000000..4f11a03dc6cc
--- /dev/null
+++ b/examples/with-styled-components-babel/next-env.d.ts
@@ -0,0 +1,5 @@
+///
+///
+
+// NOTE: This file should not be edited
+// see https://nextjs.org/docs/basic-features/typescript for more information.
diff --git a/examples/with-styled-components-babel/package.json b/examples/with-styled-components-babel/package.json
index 83bbeb7b6a61..a9a999263eda 100644
--- a/examples/with-styled-components-babel/package.json
+++ b/examples/with-styled-components-babel/package.json
@@ -13,6 +13,9 @@
"styled-components": "^5.2.3"
},
"devDependencies": {
- "babel-plugin-styled-components": "^1.12.0"
+ "@types/node": "17.0.24",
+ "@types/styled-components": "5.1.25",
+ "babel-plugin-styled-components": "^1.12.0",
+ "typescript": "4.6.3"
}
}
diff --git a/examples/with-styled-components-babel/pages/_app.js b/examples/with-styled-components-babel/pages/_app.tsx
similarity index 81%
rename from examples/with-styled-components-babel/pages/_app.js
rename to examples/with-styled-components-babel/pages/_app.tsx
index 019f78b2afc6..75b23189d4b1 100644
--- a/examples/with-styled-components-babel/pages/_app.js
+++ b/examples/with-styled-components-babel/pages/_app.tsx
@@ -8,7 +8,13 @@ const GlobalStyle = createGlobalStyle`
}
`
-const theme = {
+interface ThemeInterface {
+ colors: {
+ primary: string
+ }
+}
+
+const theme: ThemeInterface = {
colors: {
primary: '#0070f3',
},
diff --git a/examples/with-styled-components-babel/pages/_document.js b/examples/with-styled-components-babel/pages/_document.tsx
similarity index 65%
rename from examples/with-styled-components-babel/pages/_document.js
rename to examples/with-styled-components-babel/pages/_document.tsx
index 6c343842e4b8..8f22e1b2425b 100644
--- a/examples/with-styled-components-babel/pages/_document.js
+++ b/examples/with-styled-components-babel/pages/_document.tsx
@@ -1,19 +1,10 @@
-import Document, { Head, Html, Main, NextScript } from 'next/document'
+import Document, { DocumentContext, DocumentInitialProps } from 'next/document'
import { ServerStyleSheet } from 'styled-components'
export default class MyDocument extends Document {
- render() {
- return (
-
-
-
-
-
-
-
- )
- }
- static async getInitialProps(ctx) {
+ static async getInitialProps(
+ ctx: DocumentContext
+ ): Promise {
const sheet = new ServerStyleSheet()
const originalRenderPage = ctx.renderPage
@@ -27,12 +18,12 @@ export default class MyDocument extends Document {
const initialProps = await Document.getInitialProps(ctx)
return {
...initialProps,
- styles: (
+ styles: [
<>
{initialProps.styles}
{sheet.getStyleElement()}
- >
- ),
+ >,
+ ],
}
} finally {
sheet.seal()
diff --git a/examples/with-styled-components-babel/pages/index.js b/examples/with-styled-components-babel/pages/index.tsx
similarity index 100%
rename from examples/with-styled-components-babel/pages/index.js
rename to examples/with-styled-components-babel/pages/index.tsx
diff --git a/examples/with-styled-components-babel/tsconfig.json b/examples/with-styled-components-babel/tsconfig.json
new file mode 100644
index 000000000000..1563f3e87857
--- /dev/null
+++ b/examples/with-styled-components-babel/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "es5",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": false,
+ "forceConsistentCasingInFileNames": true,
+ "noEmit": true,
+ "incremental": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve"
+ },
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"],
+ "exclude": ["node_modules"]
+}