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,valgfriTypeMedlemsListe:
TypeMedlem
TypeMedlemsListe;TypeMedlem
TypeMedlemsListe,TypeMedlemTypeMedlem:
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.