GithubHelp home page GithubHelp logo

sandstorm / typescript-react-app-kickstart-guide Goto Github PK

View Code? Open in Web Editor NEW
18.0 13.0 1.0 6.54 MB

Kickstart guide for React Redux Apps written in TypeScript

License: MIT License

JavaScript 91.49% CSS 8.51%
typescript react redux redux-observable kickstart guide gitbook deprecated

typescript-react-app-kickstart-guide's Introduction

DEPRECATED! Create React APP and Redux Toolkit made it simple to set up react & redux with typescript.

React TypeScript kickstart

This the source for a guide for kickstarting a new React project with preconfigured Redux, TypeScript, Storybook and testing - all powered by docusaurus. If you find errors, inconsistencies or want to contribute: Feel free to submit issues & pull requests.

Prerequisites

These tools are needed to start developing.

# node version management
brew install nvm

# node (latest lts version)
nvm install --lts

# yarn
brew install yarn --without-node

Editor

We recommend to use VSCode as editor. Install the following Extensions:

  • TSLint -> linting support directly in editor (marketplace)
  • Type safe React & Redux Snippets in TypeScript -> Snippets for boilerplate code as shown in Cookbook (marketplace)

Cookbook

In the cookbook you will find skeletons for important modules. These skeletons are also available for VSCode as snippets in the VSCode marketplace.

Example (Component with defaultProps)

Look, Ma' - Intellisense!

component with defaultProps example

typescript-react-app-kickstart-guide's People

Contributors

jamesalias avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

prariehill

typescript-react-app-kickstart-guide's Issues

question: Why use this custom way to pick default props?

currently default props are defined with

export type PickDefaultProps<Props, defaultPropsKeys extends keyof Props> = Readonly<Required<{
    [P in defaultPropsKeys]: Props[P]
  }>>;

and used like

type DefaultProps = PickDefaultProps<ButtonProps, 'state' | "size">;

why not do:

type DefaultProps = Partial<ButtonProps>;

using the built in Partial type?

All the best, Sebastian

add example for storybook

With CRA 2.0, you need to add TS Loader to storybook; and use jsx=react as parameter.

I can push a full example later :)

More concise mapDispatchToProps

We can define mapStateToProps more concise as follows:

current:

const mapStateToProps = (dispatch: Dispatch) => ({
  action: (someArg: SomeType) => dispatch(actionCreator(someArg)),
)};

wanted:

const mapStateToProps = {
  action: actionCreator,
};

redux's connect will automatically wrap every actionCreator function with the dispatch. So we end up with the same result with less repetitive code.
reference: https://github.com/reduxjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.