JSDoc is actually still the only way to add a description to your functions and variables, even _TypeScript_ ones. You can actually use it _in place_ of TypeScript types in .ts files. You can't do all the type manipulations that TypeScript allows of course, but in many cases it's enough. I think JSDoc is the unsung hero of all this. Not many really use it correctly, and the official docs are IMO quite lackluster...
So informative! Thanks Paul. You're a fantastic educator. I'm so glad you're spending some of your free time to give back to the community like this. It really helps!
JavaScript type checking with VSCode is actually very nice. Here is another way a bet a lot of the people didn't know. You can define some custom types with jsdocs using @typedef then use it in other places. But you can also import these types from other files using a sort of dynamic-import like syntax, let say: /* @param {import("./otherfile.js").SomeType} param1 For this to work, this "otherfile.js" needs to be a module. I do this thing where I create a types.js file with all my back-end data structures and a "export default undefined" at the bottom. This file is not going to be fetched from the network since it's only imported inside jsdocs.
I thought Paul gonna also mention that we can also just add type checking for just a specific file. Just add // @ts-check to the top of any javascript file Also tested with .vue file as well
Detailed? This is actually the least useful part of JSDoc type checking in typechecking function parameters. What does this function return? Imagine a function returns an object literal and then you want to use the value of a property of that object as the parameter of another function, but you want VS Code to suggest all the type safe values bound to that object for that function's current parameter? Showing that would have been detailed. This was surface level.
Thanks for sharing this. I prefer writing my scripts the way you described. The script is automatically documented and free of typescript noise while benefiting fully from vscode intellisense and type checking. There is no extra parsing required to interpret the code for both machines and humans. There is no extra build step to deploy the code - simply minify away the comments . Typescript and JSDoc maintainers agreeing to collaborate has been invaluable. Much kudos to them.
Awesome comeback to the video from yesterday which I really enjoyed. Also your outro with the clap on the beat of the song was really awesome. Watched it twice haha, keep it up!
That's helpful, however I was wondering if there was a way to set a type on variables and function parameters in the source files (like in your main.js file for example)
JSDoc is actually still the only way to add a description to your functions and variables, even _TypeScript_ ones.
You can actually use it _in place_ of TypeScript types in .ts files. You can't do all the type manipulations that TypeScript allows of course, but in many cases it's enough.
I think JSDoc is the unsung hero of all this. Not many really use it correctly, and the official docs are IMO quite lackluster...
Yeah it is the unsung hero because you can generate your docs from it, too.
So informative! Thanks Paul. You're a fantastic educator. I'm so glad you're spending some of your free time to give back to the community like this. It really helps!
🙌
The lowered the volume on the music worked perfectly for me, thanks for that !
You were on my mind. Genuinely.
@@aerotwist I feel special haha
JavaScript type checking with VSCode is actually very nice.
Here is another way a bet a lot of the people didn't know.
You can define some custom types with jsdocs using @typedef then use it in other places. But you can also import these types from other files using a sort of dynamic-import like syntax, let say:
/* @param {import("./otherfile.js").SomeType} param1
For this to work, this "otherfile.js" needs to be a module. I do this thing where I create a types.js file with all my back-end data structures and a "export default undefined" at the bottom. This file is not going to be fetched from the network since it's only imported inside jsdocs.
Here is an example github.com/nicolasparada/nakama/blob/441c91b0273293f981ac34bab73b07441d39dbc9/web/static/js/types.js
I thought Paul gonna also mention that we can also just add type checking for just a specific file.
Just add
// @ts-check
to the top of any javascript file
Also tested with .vue file as well
And // @ts-ignore :)
I think at this point I mostly care about getting people started if they want to try it.
Finally. Typescript without compiling code. I hated debugging the compiled code. Mapping files were problematic too.
Totally agree. Useful in node scripts 👍
Wow, I thought this was going to be a pretty long video, but it was detailed and concise. Excellent!
Detailed? This is actually the least useful part of JSDoc type checking in typechecking function parameters. What does this function return? Imagine a function returns an object literal and then you want to use the value of a property of that object as the parameter of another function, but you want VS Code to suggest all the type safe values bound to that object for that function's current parameter? Showing that would have been detailed. This was surface level.
How do you only have 7.7k(currently) subs with this polished, concise and useful content?
Guess I suck at marketing?! 😂👍🙌
Thanks for sharing this. I prefer writing my scripts the way you described. The script is automatically documented and free of typescript noise while benefiting fully from vscode intellisense and type checking. There is no extra parsing required to interpret the code for both machines and humans. There is no extra build step to deploy the code - simply minify away the comments . Typescript and JSDoc maintainers agreeing to collaborate has been invaluable. Much kudos to them.
Soooo.... typescript as a devDependency & add some JSDocs and bam! Type checked JS 🥰
Awesome comeback to the video from yesterday which I really enjoyed. Also your outro with the clap on the beat of the song was really awesome. Watched it twice haha, keep it up!
Love a good edit ;)
Paul this is amazing
Is this not possible with jsdoc alone, from the command line (ie without vscode)?
Tank for the (detailled) tips Paul :) !
Thanks, Paul, this helped a lot! ^____^
Didnt Flow make TS Obsolete in 2016 ?
Nice tip, Paul ).
A bit of off-topic question - Web Assembly (WASM). Will it take over Javascript someday? For example, .NET Blazor concept.
That's helpful, however I was wondering if there was a way to set a type on variables and function parameters in the source files (like in your main.js file for example)
Have a check in the docs, but I expect so
Hi Paul, thank you! Have you tried Elm? Would love to hear your thoughts and see your fiddling with it!
Never tried it! I should at some point, I guess.
Here's a small and easy tool to add static analysis to JavaScript projects as an alternative to using TS with flags: github.com/matchai/ts-quick
How can you code on this ABYSMAL keyboard
Which abysmal keyboard?
Good growth Mr Lewis #OperationBeard
Working on it! 😁👍🙌
background-color : france
Orange and blue? Nawwwww
these intro's are really why I'm here.
Done after 10 seconds max
@@aerotwist sorry, I didn't mean to sound negative, I really enjoy them and think they're hilarious, not a complaint, pardon the sarcasm.
Just use TypeScript
That works, too :)
And waist time? 🥺
@@everythingisfine9988 What do you mean?