Home » Pinescript Syntax » Understanding Type Templates in Pine Script

Understanding Type Templates in Pine Script

Photo of author
Published on

Type templates in Pine Script are a powerful feature that allow for the creation of more dynamic and type-safe collections such as arrays, matrices, and maps. This article will dive into the specifics of using type templates, modifying the provided examples for uniqueness, and explaining the significance of each component. Let’s explore how to utilize type templates effectively in your Pine Script programming.

Arrays and Matrices

Arrays and matrices in Pine Script can contain elements of a specific data type. To declare an array or matrix with a particular type, you use type templates. A type template is specified by enclosing a type identifier within angle brackets. For instance, <int> denotes an array or matrix of integers.


Arrays are used to store a series of values of a specified type. Consider the following example where we declare an array of integers:

indicator("Enhanced Type Templates Demo")

// Declaring an array to store integer values.
intList = array.new<int>()

In this example, intList is an array designed to hold integer (int) values. This is indicated by the <int> type template.


Matrices extend the concept of arrays by allowing storage of multi-dimensional data. Here’s how to declare a matrix for floating-point numbers:

// Initializing a matrix for float values.
floatGrid = matrix.new<float>()

floatGrid is a matrix aimed to contain elements of type float, as shown by the <float> type template.


Maps in Pine Script are collections that store key-value pairs. The type template for maps includes two type identifiers: one for the key and another for the value, in the format <keyType, valueType>. For instance, <string, float> specifies a map with string keys and float values.

Example Map Declaration

Let’s declare a map that associates string keys with color values:

// A map connecting string keys to color values.
labelColorMap = map.new<string, color>()

In labelColorMap, keys are of type string, and values are of type color, as specified by the type template <string, color>.

Key Points

  • Type templates enable the declaration of collections (arrays, matrices, and maps) with specific data types, enhancing type safety and code readability.
  • Arrays and matrices use a single type template (<type>), while maps use a dual type template (<keyType, valueType>).
  • Fundamental types (int, float, bool, color, string), special types (line, linefill, box, polyline, label, table, chart.point), and user-defined types (UDTs) can be used in type templates.
  • Maps accept any type as values but are restricted to fundamental types for keys.


  • Type Templates provide a way to specify the data type of collections in Pine Script.
  • Usage: Applied in declaring variables for arrays, matrices, and maps to ensure type safety.
  • Syntax: Encloses type identifiers within angle brackets, e.g., <int>, <string, color>.
  • Flexibility: Supports fundamental types, special types, and UDTs, with restrictions on map keys.

Type templates in Pine Script are essential for creating robust and error-resistant code by enforcing type safety in collections. By utilizing these templates effectively, developers can ensure that their scripts are more maintainable and easier to understand.

Leave a Comment