You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs: fix misleading comments
* fix(types): allow `global.Netlify` declaration merging
This fixes a TypeScript error that occurs when both `@netlify/[email protected]` and
`@netlify/functions` are installed in a project (with `skipLibCheck: false`).
It would fail with:
```
Error: TS2451: Cannot redeclare block-scoped variable 'Netlify'
```
See for example #489.
You would think it wouldn't be valid to use both those packages at once, but TypeScript global
module augmentation is truly _global_ - it doesn't care where you import a package that performs
global module augmentation; your whole TS project is compiled/typechecked as one program, unless you
explicitly configure things completely separately for your `./netlify/functions` vs.
`./netlify/edge-functions` vs. `src/`... which pretty much no one does.
TypeScript allows multiple `var` declarations in a scope to merge, but `const` declarations are
cannot be redeclared. When both packages declare `global.Netlify`, they must both use `var` for the
declarations to merge successfully.
We were actually already doing this correctly, but unfortunately there was a comment that was lying
about _why_ (and there was no type test covering this). This led me to change it to `const` in
#434.
I went down a rabbit hole trying to add a regression type test for this but I had to cut my losses
after running into some issues.
0 commit comments