Microsoft/TypeScript

Incorrect emitted declaration for unique symbol re-assignment

Open

#62.305 geöffnet am 19. Aug. 2025

Auf GitHub ansehen
 (1 Kommentar) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: Declaration EmitHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

🔎 Search Terms

"TS1332", "unique symbol readonly", "function readonly property"

🕗 Version & Regression Information

N/A.

⏯ Playground Link

https://www.typescriptlang.org/play/?ts=6.0.0-dev.20250819#code/MYewdgzgLgBAtgTwMoLgIxAGxgXhi9LACgHICNMIA6RcrEgSgG4AoF0SWOy3GAbxYwh8ZKgosAvjACGEGB2isWAMwCuYYFACW4EQDF1mnWCIN+EtogMbt4GqMLY83arTFYlAegBULJAFF-GAADKgARKgAVJGCYSIBBACEqOIAJIKSAeQA1IIBhTLCggAUAJUKAVTz-JAAuNgATAFNgTGkAJyaYMGk4JogAB2lgLqtDWzB+QWEANw6RblqYdS0AR1UuiHdMVgsWAHVUgEk81JgjpBh4gDkYf1Ly0pgiaIBGAGZ3gCYl+Jg59paaRoTBdADuAAsQBAulAEAMulo5NIYCQVutNtsSDA4Qj4KpoDA0F0FFAGCxvJ42E0AB4DEDtWB8MY2YwWIA

💻 Code

const mySymbol = Symbol('Symbols.mySymbol');

const Symbols = {
    mySymbol
} as const;

function myFunction() {}

myFunction.mySymbol = Symbols.mySymbol;

/*
SEE `.D.TS` TAB. THE ABOVE CODE PRODUCES:

declare namespace myFunction {
    var mySymbol: unique symbol;
}

WHICH IS AN ERROR (TS1332: A variable whose type is a 'unique symbol' type must be const)
*/

export {myFunction}

🙁 Actual behavior

Compiler produces:

declare namespace myFunction {
    var mySymbol: unique symbol;
}

🙂 Expected behavior

Should be:

declare namespace myFunction {
    const mySymbol: unique symbol;
}

Additional information about the issue

Behaves differently when not in a module (remove export {myFunction} in the Playground)

Contributor Guide