From d2f9ffc2a35e357afbab2a05ecf20b9bd2cf836c Mon Sep 17 00:00:00 2001 From: supergrecko Date: Sat, 27 Jul 2019 01:09:07 +0200 Subject: [PATCH 1/3] Add types for react and tsconfig --- package-lock.json | 37 +++++++++++++++++++ package.json | 9 +++-- src/components/Navbar/index.tsx | 11 +++--- src/components/SEO/index.tsx | 7 ++-- src/templates/languagePost.tsx | 7 ++-- tsconfig.json | 63 +++++++++++++++++++++++++++++++++ 6 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 57eec5d..4c5c51c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1440,6 +1440,43 @@ "csstype": "^2.2.0" } }, + "@types/react-dom": { + "version": "16.8.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.5.tgz", + "integrity": "sha512-idCEjROZ2cqh29+trmTmZhsBAUNQuYrF92JHKzZ5+aiFM1mlSk3bb23CK7HhYuOY75Apgap5y2jTyHzaM2AJGA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-helmet": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-5.0.8.tgz", + "integrity": "sha512-ZTr12eDAYI0yUiMx1K82EHqRYa8J1BOOLus+0gL+AkksUiIPwLE0wLiXa9FNqD8r9GXAi+yRPZImkRh1JNlTkQ==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-native": { + "version": "0.60.2", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.60.2.tgz", + "integrity": "sha512-K4+/etirpv52xu24xAc++OdhbD0VQEt0Kq0h6dZrLU82OlA+I7BhpKF3JBvx9tbmrFaZDxhHp8N4TEvRYS4fdQ==", + "requires": { + "@types/prop-types": "*", + "@types/react": "*" + } + }, + "@types/styled-components": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-4.1.18.tgz", + "integrity": "sha512-VrHkgvjbxQXOw0xWSUckusUUZ4y/jqN1u7kF29ngh0oE6uOrlZHleTgqeUqylQqHQIeQ8MxFb50BRHy8ju5DHg==", + "requires": { + "@types/react": "*", + "@types/react-native": "*", + "csstype": "^2.2.0" + } + }, "@types/tmp": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.0.32.tgz", diff --git a/package.json b/package.json index 1435da8..d5af87e 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "version": "0.1.0", "author": "TPH", "dependencies": { + "@types/styled-components": "^4.1.18", "axios": "^0.19.0", "babel-plugin-styled-components": "^1.10.6", "gatsby": "^2.13.39", @@ -24,7 +25,6 @@ "highlight.js": "^9.15.8", "node-sass": "^4.12.0", "prismjs": "^1.17.1", - "prop-types": "^15.7.2", "react": "^16.8.6", "react-dom": "^16.8.6", "react-helmet": "^5.2.1", @@ -32,6 +32,9 @@ "styled-components": "^4.3.2" }, "devDependencies": { + "@types/react": "^16.8.23", + "@types/react-dom": "^16.8.5", + "@types/react-helmet": "^5.0.8", "prettier": "^1.18.2" }, "keywords": [ @@ -48,9 +51,9 @@ }, "repository": { "type": "git", - "url": "https://github.com/gatsbyjs/gatsby-starter-default" + "url": "https://github.com/the-programmers-hangout/website" }, "bugs": { - "url": "https://github.com/gatsbyjs/gatsby/issues" + "url": "https://github.com/the-programmers-hangout/website/issues" } } diff --git a/src/components/Navbar/index.tsx b/src/components/Navbar/index.tsx index dd66f99..f536205 100644 --- a/src/components/Navbar/index.tsx +++ b/src/components/Navbar/index.tsx @@ -1,11 +1,10 @@ - import { Link } from "gatsby"; -import PropTypes from "prop-types"; -import React from "react"; +import * as React from "react"; import icon from "./icon.png"; import { HeaderWrapper } from "./styles"; -const Navbar = ({ siteTitle }) => ( +// @todo maybe find alternative type for data +const Navbar = ({ siteTitle }: any) => (
( ) Navbar.propTypes = { - siteTitle: PropTypes.string, + siteTitle: String } Navbar.defaultProps = { siteTitle: ``, } -export default Navbar; \ No newline at end of file +export default Navbar; diff --git a/src/components/SEO/index.tsx b/src/components/SEO/index.tsx index db13b29..9d67c40 100644 --- a/src/components/SEO/index.tsx +++ b/src/components/SEO/index.tsx @@ -1,5 +1,4 @@ -import * as React from "react" -import PropTypes from "prop-types" +import React from "react" import Helmet from "react-helmet" import { useStaticQuery, graphql } from "gatsby" @@ -67,9 +66,9 @@ const SEO = ({ description = "", lang = "en", meta = [], title }: SEOProps) => { name: `twitter:description`, content: metaDescription, }, - ].concat(meta)} + ]} /> ) -} +}; export default SEO diff --git a/src/templates/languagePost.tsx b/src/templates/languagePost.tsx index fa52e0e..6355480 100644 --- a/src/templates/languagePost.tsx +++ b/src/templates/languagePost.tsx @@ -1,8 +1,9 @@ -import * as React from "react"; +import React from "react"; import { graphql } from "gatsby"; import Layout from "../components/Layout"; -const LanguagePost = ({ data }) => { +// @todo maybe find alternative type for data +const LanguagePost = ({ data }: any) => { const { html } = data.file.post; console.log(data) return ( @@ -26,4 +27,4 @@ export const query = graphql` } } } -` \ No newline at end of file +` diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3565c9a --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,63 @@ +{ + "compilerOptions": { + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */ + // "lib": [], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + // "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + // "outDir": "./", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + } +} From 68576692f844a970b517483b99d1925bdd46722b Mon Sep 17 00:00:00 2001 From: supergrecko Date: Sat, 27 Jul 2019 01:18:52 +0200 Subject: [PATCH 2/3] Fix conflict --- src/components/Navbar/index.tsx | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/src/components/Navbar/index.tsx b/src/components/Navbar/index.tsx index 560ff61..52a7750 100644 --- a/src/components/Navbar/index.tsx +++ b/src/components/Navbar/index.tsx @@ -41,28 +41,3 @@ Navbar.defaultProps = { } export default Navbar; -======= -const Navbar = ({ siteTitle = "" }) => ( - - - {/* */} -

- - {siteTitle} - -

-
- - - - -
-) - -export default Navbar; From c8fd1f7959268b3ba74c9224ff8eb0133bd242f4 Mon Sep 17 00:00:00 2001 From: supergrecko Date: Sat, 27 Jul 2019 01:21:14 +0200 Subject: [PATCH 3/3] Actually fixed it this time ... --- src/components/Navbar/index.tsx | 60 +++++++++++++-------------------- 1 file changed, 23 insertions(+), 37 deletions(-) diff --git a/src/components/Navbar/index.tsx b/src/components/Navbar/index.tsx index 52a7750..f391816 100644 --- a/src/components/Navbar/index.tsx +++ b/src/components/Navbar/index.tsx @@ -1,43 +1,29 @@ -import { Link } from "gatsby"; +import {Link} from "gatsby"; import React from "react"; import icon from "./icon.png"; -import { NavbarWrapper, NavbarItems } from "./styles"; +import {NavbarWrapper, NavbarItems} from "./styles"; -// @todo maybe find alternative type for data -const Navbar = ({ siteTitle }: any) => ( - -
-
- {/* */} -

- - {siteTitle} - -

-
-
- -
+const Navbar = ({siteTitle = ""}) => ( + + + {/* */} +

+ + {siteTitle} + +

+
+ + + + +
) -Navbar.propTypes = { - siteTitle: String -} - -Navbar.defaultProps = { - siteTitle: ``, -} - export default Navbar;