Symboler som skapas i olika anrop betraktas som lika av TypeScript
Ganska oväntat tillåter TS denna tilldelning även om objekten inte har samma nycklar. Är detta ett fel eller avsiktligt (t.ex. designbegränsning)? Finns det en lösning för att TS ska förstå att varje anrop till foo skapar ett värde av en ny unik typ?
function foo(arg: any) {
const u = Symbol();
return { [u]: arg };
}
let foo1 = foo(1);
let foo2 = foo("a");
foo1 = foo2;
lekplats
uppdatering: Intressant nog, om filen inte är en modul, ger foo-funktionsdeklarationen ett fel: Return type of exported function has or is using private name 'u'.(4060). Jag undrar varför det spelar någon roll i det här fallet om filen är en modul.
Uppdatering 2: hittade https://github.com/microsoft/TypeScript/issues/37469 Men jag skulle fortfarande vilja veta om en lösning finns.