# `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)
