Inga TypeScript-kompileringsfel för enum
Detta ser konstigt ut för mig, men TypeScript 0.9.5-kompilatorn genererar inga kompileringstidsfel när jag skriver något som:
enum A {
a,
b,
c,
}
var x : A = 20;
För att jämföra kommer C#-kompilatorn att ge följande fel: Kan inte implicit konvertera typen 'int' till 'System.Security.AccessControl.AccessControlSections'. En explicit konvertering finns (saknas en typomvandling?)
För min del skulle det vara bättre att specificera en sådan typomvandling uttryckligen:
var x : A = <A>20;
Är det en avsiktlig design och krävs i något användningsfall eller missades detta bara?
Svar #1
Det är avsiktligt. Faktumet att C#-kompilatorn förstår vad du menade ("saknas kanske en typomvandling?") är lärorikt - i allmänhet väljer TypeScript flexibilitet över strikthet. Vissa människor vill att en typomvandling ska krävas här "för att visa att du har tänkt på det"; antagandet i detta fall är att du alltid tänker när du programmerar och inte bör störas om inte något är mer uppenbart fel.
Svar #2
Detta är avsiktligt. Tal kan tilldelas till enum utan en typkonvertering och vice versa.