🔎 Search Terms
named tuple element rest recursive circularly references union unions
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about everything and didn't find anything relevant
⏯ Playground Link
https://www.typescriptlang.org/play/?esModuleInterop=false&target=99&jsx=0&noFallthroughCasesInSwitch=false&ts=6.0.0-dev.20260416&noUnusedLocals=true&noUnusedParameters=true&noUncheckedIndexedAccess=true#code/KYDwDg9gTgLgBDAnmYcDiEIBMAiEDGActqgLwBQcVcAPnAM4xQCWAdgOaXV0DaARMz4AaOADpxGbHiIkeAXTlcqvPgBtBItllAAuOKwCuAWwBGwKCPGjJuAsW3y5AbnLlQkWAmSoAQgENbGW0ARjgKaloGJjZOCJUNMXEYP3Z2YCw9f0D7YGDHcgB6AoiSiIA9CsqKpUj+dWE4LV19YzMLRNEs6Ry8hRc3cGh4JBQ4LrsSACYwmrpGFg5ZuH4Eq3Gg4En8uOW1BKaQPUNTc0sklLSMsYDuqccXItKn5+eqqvIgA
💻 Code
export type GoodDocNode =
| string
| ["i", ...GoodDocNode[]]
| ["li", index: number, ...GoodDocNode[]];
export type BadDocNode1 =
| string
| ["i", ...tagged: BadDocNode1[]]
// ^^^^^^^^
| ["li", index: number, ...BadDocNode1[]];
export type BadDocNode2 =
| string
| ["i", ...BadDocNode2[]]
| ["li", index: number, ...tagged: BadDocNode2[]];
// ^^^^^^^^
🙁 Actual behavior
Error:
Type alias 'BadDocNode1' circularly references itself.
Type alias 'BadDocNode2' circularly references itself.
🙂 Expected behavior
No errors, because the only differences between the two is the name on the rest parameter in the tuple, nothing structurally is different.
Additional information about the issue
No response
🔎 Search Terms
named tuple element rest recursive circularly references union unions
🕗 Version & Regression Information
⏯ Playground Link
https://www.typescriptlang.org/play/?esModuleInterop=false&target=99&jsx=0&noFallthroughCasesInSwitch=false&ts=6.0.0-dev.20260416&noUnusedLocals=true&noUnusedParameters=true&noUncheckedIndexedAccess=true#code/KYDwDg9gTgLgBDAnmYcDiEIBMAiEDGActqgLwBQcVcAPnAM4xQCWAdgOaXV0DaARMz4AaOADpxGbHiIkeAXTlcqvPgBtBItllAAuOKwCuAWwBGwKCPGjJuAsW3y5AbnLlQkWAmSoAQgENbGW0ARjgKaloGJjZOCJUNMXEYP3Z2YCw9f0D7YGDHcgB6AoiSiIA9CsqKpUj+dWE4LV19YzMLRNEs6Ry8hRc3cGh4JBQ4LrsSACYwmrpGFg5ZuH4Eq3Gg4En8uOW1BKaQPUNTc0sklLSMsYDuqccXItKn5+eqqvIgA
💻 Code
🙁 Actual behavior
Error:
🙂 Expected behavior
No errors, because the only differences between the two is the name on the rest parameter in the tuple, nothing structurally is different.
Additional information about the issue
No response