Enum ezno_parser::types::type_annotations::TypeAnnotation
source · pub enum TypeAnnotation {
Show 21 variants
Name(String, Span),
NamespacedName(String, String, Span),
NameWithGenericArguments(String, Vec<TypeAnnotation>, Span),
Union(Vec<TypeAnnotation>),
Intersection(Vec<TypeAnnotation>),
StringLiteral(String, Span),
NumberLiteral(NumberStructure, Span),
BooleanLiteral(bool, Span),
ArrayLiteral(Box<TypeAnnotation>, Span),
FunctionLiteral {
type_parameters: Option<Vec<GenericTypeConstraint>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
},
ConstructorLiteral {
new_keyword: Keyword<New>,
type_parameters: Option<Vec<GenericTypeConstraint>>,
parameters: TypeAnnotationFunctionParameters,
return_type: Box<TypeAnnotation>,
},
ObjectLiteral(Vec<Decorated<InterfaceMember>>, Span),
TupleLiteral(Vec<TupleElement>, Span),
TemplateLiteral(Vec<TemplateLiteralPart<TypeAnnotation>>, 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
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>)
Union e.g. number | string
Intersection(Vec<TypeAnnotation>)
Intersection e.g. c & d
StringLiteral(String, Span)
String literal e.g. "foo"
NumberLiteral(NumberStructure, 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<TupleElement>, Span)
Tuple literal e.g. [number, x: string]
TemplateLiteral(Vec<TemplateLiteralPart<TypeAnnotation>>, 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, Span>, state: &mut ParsingState, settings: &ParseOptions ) -> ParseResult<Self>
fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, settings: &ToStringOptions, depth: u8 )
source§fn get_position(&self) -> Cow<'_, Span>
fn get_position(&self) -> Cow<'_, Span>
source§fn from_string(
source: String,
settings: ParseOptions,
source_id: SourceId,
offset: Option<usize>,
cursors: Vec<(usize, EmptyCursorId)>
) -> ParseResult<Self>
fn from_string( source: String, settings: ParseOptions, source_id: SourceId, offset: Option<usize>, cursors: Vec<(usize, EmptyCursorId)> ) -> ParseResult<Self>
source§fn to_string(&self, settings: &ToStringOptions) -> String
fn to_string(&self, settings: &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