TypeScript-typad funktionsargument accepterar vad som helst
Här är ett TypeScript-utdrag som kompilerar utan problem (med version 1.5.3).
function alertNumber(a: number) {
alert(a + 1);
}
var x:any = "string";
alertNumber(x);
Hur är det möjligt att en funktion som begär en parameter av en viss typ kan anropas med ett argument av typen any?
Svar #1
Det beror på att du väljer bort typkontroll när du använder any-typer.
[Ibland] vill vi avstå från typkontroll och låta värdena passera genom kompileringstidens kontroller. För att göra detta märker vi dem med typen 'any'. - Handbok
För att undvika problem med any:
- Använd kompilatoralternativet
--noImplicitAny(eller stäng avTillåt implicita any-typeri Visual Studio). - Använd inte uttryckliga
any-typer utom där det är nödvändigt (t.ex.var x: any)