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:

  1. Använd kompilatoralternativet --noImplicitAny (eller stäng av Tillåt implicita any-typer i Visual Studio).
  2. Använd inte uttryckliga any-typer utom där det är nödvändigt (t.ex. var x: any)

Relaterade artiklar