Giter VIP home page Giter VIP logo

Comments (7)

toolness avatar toolness commented on September 21, 2024 1

Hi, I just noticed the same problem that was mentioned in #43 (comment).

Specifically, a "default" typescript configuration created via tsconfig --init sets strict: true, which means that strictFunctionTypes is enabled by default. So it's unforunate that the .map() example in the README doesn't work with it.

Here's a full example that fails to compile, which depends only on typesafe-actions (no need for redux, react-redux, etc):

import { createStandardAction } from 'typesafe-actions';

const ADD = '@prefix/ADD';

interface Todo {
  title: string;
  id: string;
  completed: boolean;
}

function cuid(): string {
  return 'this is a fake value';
}

// Below is literally what's in README.md.
export const add = createStandardAction(ADD).map(
  ({ title }: { title: string }) => ({
    payload: { title, id: cuid(), completed: false } as Todo,
  })
);

This is the error output by tsc:

error TS2345: Argument of type '({ title }: { title: string; }) => { payload: Todo; }' is not assignable to parameter of type '(payload?: { title: string; } | undefined, meta?: void | undefined) => { payload: Todo; }'.
  Types of parameters '__0' and 'payload' are incompatible.
    Type '{ title: string; } | undefined' is not assignable to type '{ title: string; }'.
      Type 'undefined' is not assignable to type '{ title: string; }'.

Anyways, for now I am just using createAction for such use cases instead of createStandardAction, e.g. rewriting the above as:

export const add = createAction(ADD, resolve => {
  return ({ title }: { title: string }) => resolve({
    title,
    id: cuid(),
    completed: false
  } as Todo);
});

Regardless, thanks again for making this library, I think it will make my redux life much easier!

from typesafe-actions.

piotrwitek avatar piotrwitek commented on September 21, 2024

I think it might be related to #42, I'm planning to investigate it this week.

from typesafe-actions.

IssueHuntBot avatar IssueHuntBot commented on September 21, 2024

@BoostIO funded this issue with $10. Visit this issue on Issuehunt

from typesafe-actions.

IssueHuntBot avatar IssueHuntBot commented on September 21, 2024

@loadbalance-sudachi-kun funded this issue with $256. Visit this issue on Issuehunt

from typesafe-actions.

IssueHuntBot avatar IssueHuntBot commented on September 21, 2024

@piotrwitek has started working. Visit this issue on Issuehunt

from typesafe-actions.

IssueHuntBot avatar IssueHuntBot commented on September 21, 2024

@piotrwitek has submitted a pull request. See it on IssueHunt

from typesafe-actions.

IssueHuntBot avatar IssueHuntBot commented on September 21, 2024

@piotrwitek has rewarded $186.20 to @piotrwitek. See it on IssueHunt

  • 💰 Total deposit: $266.00
  • 🎉 Repository reward(20%): $53.20
  • 🔧 Service fee(10%): $26.60

from typesafe-actions.

Related Issues (20)

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.