Hvorfor erklære en 'any'-returtype i TypeScript?
For eksempel:
function getUserInput(input: any): any {
return input
}
Det virker dumt å erklære «alt kan returneres». Hva er hensikten?
Svar #1
Det er nyttig for late og uvitende.
Men ikke ta dette som en klage!
Noen ganger trenger du (eller klienten/sjefen din) å være lat når du skriver. Du trenger å skrive noe raskt når den faktiske typen er for komplisert, som allerede nevnt i artems svar.
Det kan gi fleksibilitet i koding. (selv om det til slutt kan føre til en dårlig kodebase)
I tillegg kan det godt hende at du er helt ubevisst om den faktiske returtypen til en API-kall eller en JavaScript-funksjon som er en svart boks for deg. Kanskje den dynamisk konstruerer et objekt og har dusinvis av mulige returstrukturer.
For eksempel: hvordan ville du skrive typen til resultatet av eval-funksjonen hvis den (rensede) inngangen kunne være en rekke ulike JSON-uttrykk, eller et tall, eller en streng, osv?
Når du begynner å skrive object | number | string | boolean | null, vil du heller skrive any for lesbarhet.
Men selvfølgelig bør du prøve å unngå dette så mye som mulig, det anses som dårlig praksis.
Uansett, jeg tror det ville komplisere ting å gå glipp av denne språkfunksjonen i visse virkelige situasjoner.
REDIGER : og jeg holdt nesten på å glemme det, men jeg tror TypeScript må ha denne funksjonen eller en lignende en i henhold til spesifikasjonen: enhver JavaScript-kode skal være "gyldig" TypeScript (kompilatoren vil gladelig akseptere hvilken som helst JS-kode som TypeScript, og rett og slett gjøre den om til den samme JS-koden, med de riktige kompilatorinnstillingene).
I slik JS-TS-kode må de fleste bindinger implicit typiseres som any for å passe til dette scenariet.
Svar #2
Det er ingen grunn til å gjøre det for kode som opprinnelig er skrevet i TypeScript.
Når du må bruke for eksempel getUserInput()-funksjonen som allerede er implementert i Javascript, kan en deklarasjon med any-returtype noen ganger brukes som en snarvei når den faktiske returtypen ikke er åpenbar, og du ikke ønsker å bruke tid på forhånd for å finne ut hvilken type som faktisk returneres under hvilke omstendigheter.