Commit bd39b15
authored
fix(types): allow
* 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.global.Netlify declaration merging (#494)1 parent 9fe3782 commit bd39b15
File tree
3 files changed
+7
-7
lines changed- packages
- edge-functions/prod/src
- functions/prod/src
- runtime/src/lib
3 files changed
+7
-7
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | | - | |
| 4 | + | |
| 5 | + | |
7 | 6 | | |
8 | 7 | | |
9 | 8 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
5 | 7 | | |
6 | 8 | | |
7 | 9 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | | - | |
| 7 | + | |
| 8 | + | |
10 | 9 | | |
11 | 10 | | |
12 | 11 | | |
| |||
0 commit comments