Wat doet het zoekwoord ‘als’?

Ik weet niet eens zeker of aseen zoekwoord is, maar hoe dan ook, wat doet het in JavaScript?


Antwoord 1, autoriteit 100%

Dat is geen vanille-JavaScript, dat is TypeScript. Beschouw zoals elk middel het getypte object als een ongetypeerd JavaScrpt-object.

Het aszoekwoord is een Type Assertion in TypeScriptdie de compiler vertelt om het object te beschouwen als een ander type dan het type dat de compiler afleidt van het object.


Antwoord 2, autoriteit 28%

Het is TypeScript, niet vanilla JS, maar voor de aszelf: het heet Type Assertion, je vertelt de compiler alleen maar om iets als een type te behandelen:

var a = 'TEST STRING'
var b = a as string; //Means the compiler will assume it's a string

Het is gelijk aan dit:

var a = 'TEST STRING'
var b = <string> a; 

Het kan echter verwarrend zijn bij het werken met JSX (JS met html-tags)
, dus in die gevallen heeft de syntaxis asde voorkeur.


Antwoord 3, autoriteit 12%

Dit is een Typescript-operator, deze is niet beschikbaar in ECMAScript 2015 (laatste versie van Javascript)

Zoals de antwoorden hierboven aangeven, is de ‘as’-operator een vorm van Typebewering

Om een kort voorbeeld te geven, stel dat je twee typen hebt: First & Tweede. U schrijft een methode en de methode weet niet precies van welk type uw object zal zijn. Het kan van het type Eerste of Tweede zijn.

Dus u verklaart uw variabele zonder een strikt type. Zodra uw methode op de hoogte is van het type dat uw variabele moet worden ingeschakeld, kunt u het “als dat type” retourneren.

Dat leek een beetje vaag en dubbelzinnig, maar de operator ‘als’ voert eigenlijk de exact dezelfde functie uit als een ander (meer vertrouwd) patroon:

Deze twee fragmenten van code doen precies hetzelfde

   let accountCode = '123';
    let castedAccountCode = <number>accountCode;

Gebruik als trefwoord:

   let accountCode = '123';
    let castedAccountCode = accountCode as number;

Antwoord 4, Autoriteit 6%

Dit soort typebestrijding is nutteloos, zoals

function foo (a: string, b: string): number {
    return (a as number) + (b as number)
}

Gewoon transpileren naar

function foo(a, b) {
    return a + b;
}

Ik verwachtte eerst dat het zoiets is als

function foo(a, b) {
    if (typeof a != 'string') throw ...
    if (typeof b != 'string') throw ...
    return Number(a) + Number(b)
}

maar nee. TS geeft gebruikers een verkeerd gevoel van beveiliging.


Antwoord 5

Zoals hierboven de bovenstaande antwoorden wees het woord asin de code van de oorspronkelijke vraag is een trefwoord in typescript, maar als een supplement, asis contextueel trefwoord in JavaScript – wanneer De code wordt uitgevoerd in de SYNTAX-regel importclause

Other episodes