Enum ezno_parser::types::type_annotations::TypeAnnotation
source · pub enum TypeAnnotation {
Show 22 variants
Name(String, Span),
CommonName(CommonTypes, 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<GenericTypeConstraint>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
position: Span,
},
ConstructorLiteral {
new_keyword: Keyword<New>,
type_parameters: Option<Vec<GenericTypeConstraint>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
position: Span,
},
ObjectLiteral(Vec<Decorated<InterfaceMember>>, Span),
TupleLiteral(Vec<(SpreadKind, AnnotationWithBinder)>, Span),
TemplateLiteral(Vec<TemplateLiteralPart<AnnotationWithBinder>>, Span),
Readonly(Box<TypeAnnotation>, Span),
Index(Box<TypeAnnotation>, Box<TypeAnnotation>, Span),
KeyOf(Box<TypeAnnotation>, Span),
ParenthesizedReference(Box<TypeAnnotation>, Span),
Conditional {
condition: TypeCondition,
resolve_true: TypeConditionResult,
resolve_false: TypeConditionResult,
position: Span,
},
Decorated(Decorator, Box<Self>, Span),
Cursor(CursorId<TypeAnnotation>, Span),
}
Expand description
A reference to a type
TODO need to figure out what [TypeId] is used for here and where it might be useful for the checker
Variants§
Name(String, Span)
A name e.g. IPost
CommonName(CommonTypes, Span)
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
Fields
type_parameters: Option<Vec<GenericTypeConstraint>>
parameters: TypeAnnotationFunctionParameters
return_type: Box<TypeAnnotation>
Function literal e.g. (x: string) => string
ConstructorLiteral
Fields
type_parameters: Option<Vec<GenericTypeConstraint>>
parameters: TypeAnnotationFunctionParameters
return_type: Box<TypeAnnotation>
Construction literal e.g. new (x: string) => string
ObjectLiteral(Vec<Decorated<InterfaceMember>>, Span)
Object literal e.g. { y: string }
Here [TypeId] refers to the type it declares
TupleLiteral(Vec<(SpreadKind, AnnotationWithBinder)>, 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
ParenthesizedReference(Box<TypeAnnotation>, Span)
For operation precedence reasons
Conditional
Fields
condition: TypeCondition
resolve_true: TypeConditionResult
resolve_false: TypeConditionResult
Decorated(Decorator, Box<Self>, Span)
Cursor(CursorId<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, depth: u8 )
source§fn get_position(&self) -> &Span
fn get_position(&self) -> &Span
source§fn from_string(
script: String,
options: ParseOptions,
source: SourceId,
offset: Option<u32>
) -> ParseResult<Self>
fn from_string( script: String, options: ParseOptions, source: SourceId, offset: Option<u32> ) -> ParseResult<Self>
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