Enum TypeAnnotation

Source
pub enum TypeAnnotation {
Show 29 variants CommonName(CommonTypes, Span), Name(TypeName, Span), NameWithGenericArguments(TypeName, 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 { parts: Vec<(String, AnnotationWithBinder)>, last: String, position: Span, }, Readonly(Box<TypeAnnotation>, Span), Abstract(Box<TypeAnnotation>, Span), Index(Box<TypeAnnotation>, Box<TypeAnnotation>, Span), KeyOf(Box<TypeAnnotation>, Span), TypeOf(Box<VariableOrPropertyAccess>, Span), Infer { name: String, extends: Option<Box<TypeAnnotation>>, position: Span, }, Asserts(Box<TypeAnnotation>, Span), Extends { item: Box<TypeAnnotation>, extends: Box<TypeAnnotation>, position: Span, }, Is { reference: IsItem, 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), This(Span), Marker(Marker<TypeAnnotation>, Span),
}
Expand description

A reference to a type

Variants§

§

CommonName(CommonTypes, Span)

Common types that don’t have to allocate a string for

§

Name(TypeName, Span)

A name e.g. IPost

§

NameWithGenericArguments(TypeName, 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>>
§return_type: Box<TypeAnnotation>
§position: Span
§

ConstructorLiteral

Construction literal e.g. new (x: string) => string

Fields

§type_parameters: Option<Vec<TypeParameter>>
§return_type: Box<TypeAnnotation>
§position: Span
§

ObjectLiteral(Vec<WithComment<Decorated<InterfaceMember>>>, Span)

Object literal e.g. { y: string }

§

TupleLiteral(Vec<TupleLiteralElement>, Span)

Tuple literal e.g. [number, x: string]

§

TemplateLiteral

?

Fields

§last: String
§position: Span
§

Readonly(Box<TypeAnnotation>, Span)

Declares type as not assignable (still has interior mutability) e.g. readonly number

§

Abstract(Box<TypeAnnotation>, Span)

I have no idea what this is for?

§

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

Fields

§name: String
§position: Span
§

Asserts(Box<TypeAnnotation>, Span)

This is technically a special return type in TypeScript but we can make a superset behavior here

§

Extends

Fields

§position: Span
§

Is

Fields

§reference: IsItem
§position: Span
§

Conditional

Fields

§condition: Box<TypeAnnotation>
§resolve_true: Box<TypeAnnotation>
§resolve_false: Box<TypeAnnotation>
§position: Span
§

Symbol

Fields

§unique: bool

TODO unsure

§position: Span
§

ParenthesizedReference(Box<TypeAnnotation>, Span)

For operation precedence reasons

§

Decorated(Decorator, Box<Self>, Span)

With decorators

§

This(Span)

Allowed in certain positions

§

Marker(Marker<TypeAnnotation>, Span)

Trait Implementations§

Source§

impl ASTNode for TypeAnnotation

Source§

fn from_reader( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, ) -> ParseResult<Self>

Source§

fn to_string_from_buffer<T: ToString>( &self, buf: &mut T, options: &ToStringOptions, local: LocalToStringInformation, )

Source§

fn get_position(&self) -> Span

Returns position of node as span AS IT WAS PARSED. May be Span::NULL if AST was doesn’t match anything in source
Source§

fn from_string(script: String, options: ParseOptions) -> ParseResult<Self>

From string, with default impl to call abstract method from_reader
Source§

fn from_string_with_options( script: String, options: ParseOptions, offset: Option<u32>, ) -> ParseResult<(Self, ParsingState)>

Source§

fn to_string(&self, options: &ToStringOptions) -> String

Returns structure as valid string
Source§

impl Clone for TypeAnnotation

Source§

fn clone(&self) -> TypeAnnotation

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TypeAnnotation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl GetFieldByType<BaseSpan<()>> for TypeAnnotation

Source§

fn get(&self) -> &Span

Get the value of a field that has type T
Source§

impl ListItem for TypeAnnotation

Source§

type LAST = ()

Source§

const LAST_PREFIX: Option<TSXToken> = None

Source§

const EMPTY: Option<Self> = None

Source§

fn parse_last_item( reader: &mut impl TokenReader<TSXToken, TokenStart>, state: &mut ParsingState, options: &ParseOptions, ) -> ParseResult<Self::LAST>

Source§

impl PartialEq for TypeAnnotation

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl SelfRustTokenize for TypeAnnotation

Source§

fn append_to_token_stream(&self, token_stream: &mut TokenStream)

Source§

fn to_tokens(&self) -> TokenStream

Returns the tokens used to construct self
Source§

impl Serialize for TypeAnnotation

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Visitable for TypeAnnotation

Source§

fn visit<TData>( &self, _visitors: &mut (impl VisitorReceiver<TData> + ?Sized), _data: &mut TData, _options: &VisitOptions, _chain: &mut Annex<'_, Chain>, )

Source§

fn visit_mut<TData>( &mut self, _visitors: &mut (impl VisitorMutReceiver<TData> + ?Sized), _data: &mut TData, _options: &VisitOptions, _chain: &mut Annex<'_, Chain>, )

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoAST<T> for T
where T: ASTNode,

Source§

fn into_ast(self) -> T

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.