Ik weet niet eens zeker of as
een 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 as
zoekwoord 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 as
zelf: 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 as
de 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 as
in de code van de oorspronkelijke vraag is een trefwoord in typescript, maar als een supplement, as
is contextueel trefwoord in JavaScript – wanneer De code wordt uitgevoerd in de SYNTAX-regel importclause