Data types in TypeScript (original) (raw)
Last Updated : 21 Jan, 2025
In TypeScript, a data type defines the kind of values a variable can hold, ensuring type safety and enhancing code clarity.
- **Primitive Types: Basic types like number, string, boolean, null, undefined, and symbol.
- **Object Types: Complex structures including arrays, classes, interfaces, and functions.
**Primitive Types
Primitive types are the most basic data types in TypeScript. They represent simple, immutable values and are directly assigned.
Type | Keyword | Description |
---|---|---|
Number | number | Represents both integer and floating-point numbers. |
String | string | Represents textual data. |
Boolean | boolean | Represents logical values: true or false. |
Null | null | Represents the intentional absence of any object value. |
Undefined | undefined | Represents an uninitialized variable. |
Symbol | symbol | Represents a unique, immutable value, often used as object keys. |
BigInt | bigint | Represents integers with arbitrary precision. |
**Object Types
Object types are more complex structures that can contain multiple values and functions. They are mutable and can be manipulated after creation.
Type | Description |
---|---|
Object | Represents any non-primitive type; however, its use is discouraged in favor of more specific types. |
Array | Represents a collection of elements of a specific type. |
Tuple | Represents an array with a fixed number of elements of specific types. |
Enum | Represents a set of named constants, allowing for a collection of related values. |
Function | Represents a callable entity; can define parameter and return types. |
Class | Defines a blueprint for creating objects with specific properties and methods. |
Interface | Describes the shape of an object, specifying property names and types. |
**Advanced Types
TypeScript also offers advanced types that provide additional capabilities for complex type definitions:
Type | Description |
---|---|
Union Types | Allows a variable to hold one of several types, providing flexibility in type assignments. |
Intersection Types | Combines multiple types into one, requiring a value to satisfy all included types. |
Literal Types | Enables exact value types, allowing variables to be assigned specific values only. |
Mapped Types | Creates new types by transforming properties of an existing type according to a specified rule. |
Best Practices of Using Data types in TypeScript
- **Use let and const Instead of var: Prefer let and const for block-scoped variables to avoid issues with hoisting and scope leakage.
- **Avoid the any Type: Refrain from using any as it bypasses type checking; opt for specific types to maintain type safety.
- **Leverage Type Inference: Allow TypeScript to infer types when possible, reducing redundancy and enhancing code readability.
- **Utilize Utility Types: Employ built-in utility types like Partial and Readonly to create flexible and readable type definitions.