een promise is een instantie (object) van de Promise klasse (constructor). Om een belofte te maken, gebruiken we new Promise(executor) syntaxis en bieden we een uitvoerfunctie als argument. Deze executor functie biedt een middel om het gedrag van onze belofte resolutie of afwijzing te controleren.
in TypeScript kunnen we het gegevenstype opgeven van de waarde die wordt geretourneerd wanneer de belofte wordt vervuld. Aangezien de fout die door de belofte wordt geretourneerd elke vorm kan aannemen, wordt het standaard gegevenstype van de waarde die wordt geretourneerd wanneer de belofte wordt afgewezen ingesteld op any door het TypeScript.
om het resolutietype van de promise te annoteren, gebruiken we een generic type declaratie. In principe beloof je een type met Promise constructor in de vorm van new Promise<Type>() wat het gevonden waardetype van de belofte aangeeft. Maar u kunt ook let p: Promise<Type> = new Promise() syntaxis gebruiken om hetzelfde te bereiken.
💡 we hebben genericaklassen in detail besproken in de Genericaklassen.
in het bovenstaande voorbeeld is findEven een belofte die werd gemaakt met behulp van de Promise constructor die na 1 seconde oplost. Het gevonden gegevenstype van deze belofte is number, vandaar dat de TypeScript-compiler u niet toestaat om resolve functie aan te roepen met een andere waarde dan een waarde van het typenummer number.
het standaardtype van de afstotingswaarde van de belofte is any, dus het aanroepen van reject functie met een willekeurige waarde is legaal. Dit is het standaard gedrag van TypeScript, en je kunt de discussie thread hier vinden als je je eigen meningen hebt.
aangezien we het number als het gegevenstype van succesvolle promise-resolutie hebben opgegeven, zal de TypeScript-compiler het number type leveren aan het argument van value argument van de then callback methode.
de callback in dethen methode wordt uitgevoerd wanneer de belofte is opgelost en de callback incatch methode wordt uitgevoerd wanneer het een fout afwijst tijdens het oplossen van de belofte. De methode finally registreert een callback die wordt uitgevoerd wanneer promise wordt opgelost of geweigerd.
als de TypeScript-compiler klaagt over de finally methode, betekent dit dat uw TypeScript-compiler geen typedefinities importeert voor de finally methode. Deze methode werd geïntroduceerd in ES2016, dus het is vrij nieuw. Andere functies van de Promise API die in deze les worden gebruikt zijn vrij nieuw, dus zorg ervoor dat uw tsconfig.json bestand alle nieuwe bibliotheken heeft geladen.