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.