Enum ezno_parser::types::type_annotations::TypeAnnotation
source · pub enum TypeAnnotation {
Show 29 variants
Name(String, Span),
CommonName(CommonTypes, Span),
This(Span),
NamespacedName(String, String, Span),
NameWithGenericArguments(String, Vec<TypeAnnotation>, Span),
Union(Vec<TypeAnnotation>, Span),
Intersection(Vec<TypeAnnotation>, Span),
StringLiteral(String, Quoted, Span),
NumberLiteral(NumberRepresentation, Span),
BooleanLiteral(bool, Span),
ArrayLiteral(Box<TypeAnnotation>, Span),
FunctionLiteral {
type_parameters: Option<Vec<TypeParameter>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
position: Span,
},
ConstructorLiteral {
type_parameters: Option<Vec<TypeParameter>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
position: Span,
},
ObjectLiteral(Vec<WithComment<Decorated<InterfaceMember>>>, Span),
TupleLiteral(Vec<TupleLiteralElement>, Span),
TemplateLiteral(Vec<TemplateLiteralPart<AnnotationWithBinder>>, Span),
Readonly(Box<TypeAnnotation>, Span),
Index(Box<TypeAnnotation>, Box<TypeAnnotation>, Span),
KeyOf(Box<TypeAnnotation>, Span),
TypeOf(Box<VariableOrPropertyAccess>, Span),
Infer(String, Span),
Asserts(Box<TypeAnnotation>, Span),
Extends {
item: Box<TypeAnnotation>,
extends: Box<TypeAnnotation>,
position: Span,
},
Is {
item: Box<TypeAnnotation>,
is: Box<TypeAnnotation>,
position: Span,
},
Conditional {
condition: Box<TypeAnnotation>,
resolve_true: Box<TypeAnnotation>,
resolve_false: Box<TypeAnnotation>,
position: Span,
},
Symbol {
unique: bool,
name: Option<String>,
position: Span,
},
ParenthesizedReference(Box<TypeAnnotation>, Span),
Decorated(Decorator, Box<Self>, Span),
Marker(Marker<TypeAnnotation>, Span),
}
Expand description
A reference to a type
Variants§
Name(String, Span)
A name e.g. IPost
CommonName(CommonTypes, Span)
This(Span)
WIP
NamespacedName(String, String, Span)
A name e.g. Intl.IPost
. TODO can there be more than 2 members
NameWithGenericArguments(String, Vec<TypeAnnotation>, Span)
A name with generics e.g. Array<number>
Union(Vec<TypeAnnotation>, Span)
Union e.g. number | string
Intersection(Vec<TypeAnnotation>, Span)
Intersection e.g. c & d
StringLiteral(String, Quoted, Span)
String literal e.g. "foo"
NumberLiteral(NumberRepresentation, Span)
Number literal e.g. 45
BooleanLiteral(bool, Span)
Boolean literal e.g. true
ArrayLiteral(Box<TypeAnnotation>, Span)
Array literal e.g. string[]
. This is syntactic sugar for Array
with type arguments. This is not the same
as a TypeAnnotation::TupleLiteral
FunctionLiteral
Function literal e.g. (x: string) => string
Fields
type_parameters: Option<Vec<TypeParameter>>
parameters: TypeAnnotationFunctionParameters
return_type: Box<TypeAnnotation>
ConstructorLiteral
Construction literal e.g. new (x: string) => string
Fields
type_parameters: Option<Vec<TypeParameter>>
parameters: TypeAnnotationFunctionParameters
return_type: Box<TypeAnnotation>
ObjectLiteral(Vec<WithComment<Decorated<InterfaceMember>>>, Span)
Object literal e.g. { y: string }
TupleLiteral(Vec<TupleLiteralElement>, Span)
Tuple literal e.g. [number, x: string]
TemplateLiteral(Vec<TemplateLiteralPart<AnnotationWithBinder>>, Span)
?
Readonly(Box<TypeAnnotation>, Span)
Declares type as not assignable (still has interior mutability) e.g. readonly number
Index(Box<TypeAnnotation>, Box<TypeAnnotation>, Span)
Declares type as being union type of all property types e.g. T[K]
KeyOf(Box<TypeAnnotation>, Span)
KeyOf
TypeOf(Box<VariableOrPropertyAccess>, Span)
Infer(String, Span)
Asserts(Box<TypeAnnotation>, Span)
This is technically a special return type in TypeScript but we can make a superset behavior here
Extends
Is
Conditional
Fields
condition: Box<TypeAnnotation>
resolve_true: Box<TypeAnnotation>
resolve_false: Box<TypeAnnotation>
Symbol
ParenthesizedReference(Box<TypeAnnotation>, Span)
For operation precedence reasons
Decorated(Decorator, Box<Self>, Span)
Marker(Marker<TypeAnnotation>, Span)
Trait Implementations§
source§impl ASTNode for TypeAnnotation
impl ASTNode for TypeAnnotation
fn from_reader( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions ) -> ParseResult<Self>
fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, options: &ToStringOptions, local: LocalToStringInformation )
source§fn get_position(&self) -> Span
fn get_position(&self) -> Span
Span::NULL
if AST was doesn’t match anything in sourcesource§fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>
fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>
from_reader
fn from_string_with_options( script: String, options: ParseOptions, offset: Option<u32> ) -> ParseResult<(Self, ParsingState)>
source§fn to_string(&self, options: &ToStringOptions) -> String
fn to_string(&self, options: &ToStringOptions) -> String
source§impl Clone for TypeAnnotation
impl Clone for TypeAnnotation
source§fn clone(&self) -> TypeAnnotation
fn clone(&self) -> TypeAnnotation
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more