Microsoft/TypeScript

Incorrect emitted declaration for unique symbol re-assignment

Open

#62.305 aperta il 19 ago 2025

Vedi su GitHub
 (1 commento) (0 reazioni) (0 assegnatari)TypeScript (6726 fork)batch import
BugDomain: Declaration EmitHelp Wanted

Metriche repository

Star
 (48.455 star)
Metriche merge PR
 (Merge medio 6g 17h) (9 PR mergiate in 30 g)

Descrizione

🔎 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)

Guida contributor