total-typescript / advanced-patterns-workshop

An interactive TypeScript repo on advanced patterns (WIP)
1.27k stars 191 forks source link

exercise 10 event dispatcher type check errors #7

Open isimmons opened 11 months ago

isimmons commented 11 months ago

Both in the stackblitz in the course and on my local machine with the run exercise command, the tests pass but then type checking has the following error

Checking types...
src/02-globals/10-event-dispatcher.problem.1.ts:34:19 - error TS2322: Type '"LOG_OUT"' is not assignable to type '"LOG_IN"'.

34   dispatchEvent({ type: 'LOG_OUT' });
                     ~~~~

  src/02-globals/10-event-dispatcher.problem.1.ts:22:7
    22       type: K;
             ~~~~
    The expected type comes from property 'type' which is declared here on type '{ type: "LOG_IN"; } 
& { username: string; password: string; }'

I copied the LOG_OUT event over to problem file 1 and this fixed the problem.

But then I renamed problem file 2 to 10.1 and ran npm run exercise 10.1 and it can't find UnionOfDispatchableEvents

So I'm guessing this is because a single file is being type checked in isolation so in file 1 there is no 'LOG_OUT' and in file 2 there is no UnionOfDispatchableEvents. Is that right?

freiondrej-lokalise commented 11 months ago

Hello, I have the same problem 🙏

boltex commented 7 months ago

@isimmons @freiondrej-lokalise I also got that strange behavior, although I've completed the exercise and verified it's exactly how the solution proposes the fix should be done.

I made sure to also re-save the file '10-event-dispatcher.problem.1' to force a recompile/recheck but it still gives the type error, although the '10-event-dispatcher.problem.2' file is exactly as per the solution given by Matt. But I'm also getting this typing error in the console.

image