Giter VIP home page Giter VIP logo

route-typed's Introduction

route-typed

Prevent route errors by making the route params type safe.

Install

# npm
npm install route-typed

# yarn
yarn add route-typed

Usage

// routes.ts
import { route } from 'route-typed';

export const routes = {
  dashboard: route('/dashboard'),
  user: {
    list: route('/users'),
    view: route('/users/:id'),
  },
};

// or

import { createRoutes } from 'route-typed';

export const routes = createRoutes({
  dashboard: '/dashboard',
  user: {
    list: '/users',
    view: '/users/:userId',
  },
});

routes.dashboard.route // => /dashboard
routes.dashboard({}) // => /dashboard

routes.user.list.route // => /users
routes.user.list({}) // => /users

routes.user.view.route // => /users/:userId
routes.user.view({ userId: 1 }) // => /users/1
// app.tsx
import { routes } from '~/routes';

const App = () => {
  return (
    <Routes>
      <Route path={routes.dashboard.route} element={<Dashboard />} />
      <Route path={routes.user.list.route} element={<Users />} />
      <Route path={routes.user.view.route} element={<UserView />} />
    </Routes>
  );
};
// nav.tsx
import { routes } from '~/routes';

const NavComponent = () => {
  return (
    <>
      <a href={routes.dashboard({})}>Dashboard</a>
      <a href={routes.user.list({})}>Users</a>
    </>
  );
};
// user/list.tsx
import { routes } from '~/routes';

const users = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
];


const Users = () => {
  return (
    <>
      {users.map(user => (
        <a href={routes.user.view({ id: user.id })}>{user.name}</a>
      ))}
    </>
  );
};

route-typed's People

Contributors

albertilagan avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

supachaidev

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.