Hvad er det korrekte navn for Typescript "Anonyme" typedefinitioner?


Jeg kigger på denne kode options?: { name?: string, async?: boolean }. Hvad er den korrekte betegnelse for typen { name?: string, async?: boolean }? Det ligner en "Anonymous class"-definition i Java, men jeg gætter på, at det hedder noget andet ...

Svar #1

Ifølge Typescript-sprogspesifikationen kaldes disse for objekt typeliteraler:

Et objekt type-literal definerer en objekt type ved at specificere det sæt af medlemmer, der statisk anses for at være til stede i forekomster af typen. Objekt type-literals kan få navne ved hjælp af interface-deklarationer, men er ellers anonyme.

  ObjektType:
   { TypeKropvalgfri }

  TypeBody:
   TypeMemberList ;valgfri
   TypeMemberList ,valgfri

  TypeMedlemsListe:
   TypeMedlem
   TypeMedlemsListe ; TypeMedlem
   TypeMedlemsListe , TypeMedlem

  TypeMedlem:
   EjendomSkrift
   KaldSkrift
   KonstruktionsSkrift
   IndeksSkrift
   MetodeSkrift

Svar #2

Anonim type er korrekt:

https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#3.8.10

Typeforespørgsler er nyttige til at fange anonyme typer, der genereres af forskellige konstruktionsformer såsom objekter, funktionsdeklarationer og navnerumsdeklarationer.

——-

Originalt svar:

Jeg er ikke sikker, men her er nogle ting, jeg har kaldt det:

  • Uden navn Type
  • Adhoc-type
  • Anonym type

En note:

Typescript bruger duck-typing, så det er muligt at bruge alternative typetiketter, der har matchende medlems-typer, udskifteligt.

Med andre ord: et objekt, der kvækker som en and, kan kaldes en and, uanset hvilken type det oprindeligt blev erklæret som (eller om det havde en navngivet typeerklæring eller kun en ad hoc-erklæring som dit eksempel).

Så hvis du har en type:

type Options = {name?:string, async?: boolean};

Objektet i spørgsmålet er af samme type (så vidt typesystemet er concerned), selvom det aldrig blev erklæret at have denne type.

Men i tooltips vil IDE'en som regel kun vise den erklærede type.

Relaterede artikler