# `TypeNode` (abstract)

The `TypeNode` type helper represents all the available type nodes as well as the `DefinedTypeLinkNode` which allows us to reuse a pre-defined type node. Note that `TypeNode` is a type alias and cannot be used directly as a node. Instead you may use one of the following nodes:

-   [`AmountTypeNode`](./AmountTypeNode.md)
-   [`ArrayTypeNode`](./ArrayTypeNode.md)
-   [`BooleanTypeNode`](./BooleanTypeNode.md)
-   [`BytesTypeNode`](./BytesTypeNode.md)
-   [`DateTimeTypeNode`](./DateTimeTypeNode.md)
-   [`DefinedTypeLinkNode`](../linkNodes/DefinedTypeLinkNode.md)
-   [`EnumTypeNode`](./EnumTypeNode.md)
-   [`FixedSizeTypeNode`](./FixedSizeTypeNode.md)
-   [`HiddenPrefixTypeNode`](./HiddenPrefixTypeNode.md)
-   [`HiddenSuffixTypeNode`](./HiddenSuffixTypeNode.md)
-   [`MapTypeNode`](./MapTypeNode.md)
-   [`NumberTypeNode`](./NumberTypeNode.md)
-   [`OptionTypeNode`](./OptionTypeNode.md)
-   [`PostOffsetTypeNode`](./PostOffsetTypeNode.md)
-   [`PreOffsetTypeNode`](./PreOffsetTypeNode.md)
-   [`PublicKeyTypeNode`](./PublicKeyTypeNode.md)
-   [`RemainderOptionTypeNode`](./RemainderOptionTypeNode.md)
-   [`SentinelTypeNode`](./SentinelTypeNode.md)
-   [`SetTypeNode`](./SetTypeNode.md)
-   [`SizePrefixTypeNode`](./SizePrefixTypeNode.md)
-   [`SolAmountTypeNode`](./SolAmountTypeNode.md)
-   [`StringTypeNode`](./StringTypeNode.md)
-   [`StructTypeNode`](./StructTypeNode.md)
-   [`TupleTypeNode`](./TupleTypeNode.md)
-   [`ZeroableOptionTypeNode`](./ZeroableOptionTypeNode.md)
