TypeScript förbjuder with-satser
TypeScript tillåter inte with-satsen från JavaScript.
var radius = 12;
with (Math) {
var area = PI * radius * radius;
}
Förklaringen är att det inte är tillåtet i "strict mode" i ECMAscript 5.
Är detta bara with-satsen - eller är allt som är förbjudet av "strict mode" också förbjudet i TypeScript?
Svar #1
TypeScript tillåter with-satser, eftersom det att inte göra det skulle bryta mot att det är en övermängd av JavaScript. Kompilatorn kommer dock att generera ett fel (men kompilerar fortfarande och producerar kod), eftersom det inte finns något sätt för något att veta något om vad som refereras från en with-sats förutom vid körning, vilket helt slår ut syftet med statisk typning, så du bör inte använda det i ett TypeScript-program. Det finns en ytterligare diskussion om detta på TypeScript-forumet.
När det gäller andra saker som inte är tillåtna i strikt läge i TypeScript, eftersom TypeScript försöker följa ES6-specifikationen där det går för sina nya funktioner, och ES6-specifikationen (§10.2.1) säger ”Modulkod är alltid strikt kod.” och ”Ett ClassDeclaration eller ett ClassExpression är alltid strikt kod.”, kommer du förmodligen att upptäcka att nästan all din TypeScript-kod kommer att behöva följa strikt läge vid någon tidpunkt i framtiden, om inte idag.