Last active
December 19, 2019 15:18
-
-
Save joethephish/e22b53f0ae4212137dca1bb900b6f1f1 to your computer and use it in GitHub Desktop.
Default param causes ts-check to fail
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const Obj = { | |
| x: 1, | |
| f: (y = Obj.x) => {} | |
| }; | |
| Obj.x; // No definition found for 'x' |
Cool, yeah. I definitely prefer this JSDoc approach in general for "lightweight" type-checking on small projects / prototypes without setting up a full TypeScript tool chain.
Exactly.
And amusingly, just accidentally caught this approach in that very editor:
https://www.typescriptlang.org/play/main-3.js
// whoa, no typescript and no compilation!
😄
(Sorry for spam, just had to share. Happy holidays :] )
OH, and BTW, if you are using modern-ish JS, you'll probably need do add few libs to "have" some features missing in current TS standard defs; for example in service worker I needed
/// <reference lib="webworker" />
// `Property 'finally' does not exist on type 'Promise<void>'`, introduced with es2018
/// <reference lib="es2018.promise" />
Hah, nice! Happy holidays!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Ah, great find! And it is neatly visible how it works when using "other" objects in default params and what's wrong with
const x = { prop: x }(what yields error in JS anyway).I wonder if VSC could report such problems in panel; tried enabling TS Server log but couldn't find anything helpful there.
(Anyway, in my setup I rarely hit such problem: I stick to really "dumb" JS for ancient browsers, so no consts, no default params, but still enjoying type checking from JSDoc definitions.)