TypeScript Primitive Types string, number, boolean Step by step Implementation and Top 10 Questions and Answers
 .NET School AI Teacher - SELECT ANY TEXT TO EXPLANATION.    Last Update: April 01, 2025      19 mins read      Difficulty-Level: beginner

TypeScript Primitive Types: String, Number, Boolean

TypeScript, as a statically-typed super-set of JavaScript, includes several built-in primitive types which help developers write more robust and predictable code. Among these are string, number, and boolean. Understanding these types is crucial as they form the foundation upon which complex data structures and applications are built.

String

The string type represents textual data in TypeScript (and JavaScript). It is used to declare variables that hold sequences of characters, such as names, addresses, or any other kind of text.

Syntax:

let myString: string = "Hello, TypeScript!";

In this example, we declare a variable myString and initialize it with the value "Hello, TypeScript!". The : string part explicitly specifies that myString should be of type string.

Usage:

  1. Concatenation: Strings in TypeScript can be concatenated using the + operator, similar to JavaScript.

    let greeting: string = "Hello";
    let name: string = "John";
    let fullGreeting: string = greeting + ", " + name + "!"; // Output: "Hello, John!"
    
  2. Template Literals: Introduced in ES6, template literals provide a way to embed expressions inside string literals, using backticks (`) rather than single (') or double (") quotes.

    let firstName: string = "Alice";
    let lastName: string = "Smith";
    let fullName: string = `${firstName} ${lastName}`; // Output: "Alice Smith"
    
  3. String Methods: TypeScript strings come with several methods like toUpperCase(), toLowerCase(), split(), etc., which can be utilized for various string manipulations.

    let message: string = "Hello world!";
    
    console.log(message.toUpperCase()); // Output: "HELLO WORLD!"
    console.log(message.toLowerCase()); // Output: "hello world!"
    console.log(message.split(" "));     // Output: ['Hello', 'world!']
    

Number

The number type in TypeScript corresponds to the Number type in JavaScript. It represents both integer and floating-point numbers.

Syntax:

let age: number = 25;
let weight: number = 68.5;

Here, age is an integer, while weight is a floating-point number. Both variables are explicitly typed as number.

Key Points:

  1. Arithmetic Operations: Numbers support all standard arithmetic operations such as addition, subtraction, multiplication, division, modulus, etc.

    let num1: number = 10;
    let num2: number = 5;
    
    console.log(num1 + num2); // Output: 15
    console.log(num1 - num2); // Output: 5
    console.log(num1 * num2); // Output: 50
    console.log(num1 / num2); // Output: 2
    console.log(num1 % num2); // Output: 0
    
  2. Math Library: TypeScript provides access to the browser's Math library, enabling more advanced numeric computations without external dependencies.

    let radius: number = 7;
    
    console.log(Math.PI);        // Output: 3.141592653589793
    console.log(Math.pow(radius, 2)); // Output: 49
    console.log(Math.sqrt(49));    // Output: 7
    
  3. Type Safety: One advantage of using TypeScript is the ability to catch type errors at compile time. Attempting to perform numeric operations on non-numeric values will result in compilation errors.

    let a: number = 10;
    let b: string = "20";
    
    // let c: number = a + b; // Error: Operator '+' cannot be applied to types 'number' and 'string'.
    

Boolean

The boolean type in TypeScript is used to represent true/false values. Booleans are fundamental in control flow statements like conditionals and loops.

Syntax:

let isDone: boolean = false;
let isLoggedIn: boolean = true;

Here, both isDone and isLoggedIn are initialized with either true or false.

Common Use Cases:

  1. Conditional Statements: Booleans are crucial for if-else and switch-case conditions.

    let isAuthenticated: boolean = false;
    
    if (isAuthenticated) {
        console.log("User is logged in.");
    } else {
        console.log("User is not logged in.");
    }
    // Output: "User is not logged in."
    
  2. Logical Operations: They can be combined with logical operators AND (&&), OR (||), and NOT (!) for more complex conditions.

    let isAdmin: boolean = true;
    let hasActiveSession: boolean = false;
    
    if (isAdmin && hasActiveSession) {
        console.log("Admin session active.");
    } else {
        console.log("Admin session not active.");
    }
    // Output: "Admin session not active."
    
  3. Functions Returning Booleans: Functions often return boolean values to indicate success/failure or true/false states.

    function isValidEmail(email: string): boolean {
        const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
        return emailPattern.test(email);
    }
    
    console.log(isValidEmail("test@example.com")); // Output: true
    console.log(isValidEmail("invalid-email"));      // Output: false
    

Summary

Understanding and utilizing TypeScript's primitive types — string, number, and boolean — is essential for writing type-safe and maintainable code. By leveraging these types effectively, developers can reduce bugs, improve performance, and enhance overall software quality. Whether it's manipulating text, performing mathematical calculations, or controlling program execution flow based on conditions, these building blocks provide the necessary tools to craft efficient and reliable applications.




Examples, Set Route, Run the Application, and Data Flow Step by Step for Beginners

Introduction to TypeScript Primitive Types: string, number, boolean

TypeScript, often abbreviated as TS, is a powerful JavaScript superset that introduces static typing to the language, enhancing its reliability and scalability. TypeScript's primary goal is to prevent common types of errors and make large-scale software development more manageable.

In this guide, we will take you through the process of creating a simple TypeScript application, focusing on its primitive types—specifically string, number, and boolean—and learn how these elements interact within the application. We'll cover setting up a project, defining routes, running the application, and understanding the data flow.

Prerequisites

Before proceeding, ensure you have Node.js and npm (Node Package Manager) installed on your machine:

  1. Node.js Installation: Download and Install Node.js.
  2. Verify Installation: Open your terminal or command prompt and type:
    node --version
    npm --version
    

If these commands return version numbers, Node.js and npm are correctly installed.

Step-by-Step Guide

Step 1: Create a New TypeScript Project
  1. Create a Project Directory:

    mkdir ts-primitive-types-demo
    cd ts-primitive-types-demo
    
  2. Initialize a New Node Project:

    npm init -y
    

    This command creates a package.json file with default settings.

  3. Install TypeScript:

    npm install typescript --save-dev
    
  4. Initialize TypeScript Configuration:

    npx tsc --init
    

    This generates a tsconfig.json file, which configures the TypeScript compiler's behavior.

  5. Modify tsconfig.json (Optional): Ensure that the compilerOptions include sensible defaults:

    {
      "compilerOptions": {
        "target": "ES6", // Compile to ES6 JavaScript code
        "module": "commonjs",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true
      },
      "include": ["src/**/*"], // Include all files in the src directory
      "exclude": ["node_modules"]
    }
    
  6. Create a Source Directory:

    mkdir src
    
Step 2: Write TypeScript Code

Navigate to the newly created src directory and create an index.ts file:

cd src
touch index.ts

Inside index.ts, define variables using the primitive types string, number, and boolean:

// Define a string variable
let greeting: string = "Hello, TypeScript!";

// Define a number variable
let age: number = 30;

// Define a boolean variable
let isActive: boolean = true;

// Log each variable to the console
function logVariables(): void {
  console.log("Greeting:", greeting);
  console.log("Age:", age);
  console.log("Is Active:", isActive);
}

// Call the function
logVariables();

This code snippet demonstrates how to declare and use primitive types in TypeScript. The logVariables function prints each variable to the console.

Step 3: Compile and Run the Application
  1. Compile TypeScript Code: Go back to the root directory (ts-primitive-types-demo) and compile the TypeScript code using the TypeScript compiler:

    npx tsc
    

    This command compiles all TypeScript files specified in tsconfig.json and generates corresponding JavaScript files in the dist folder (or wherever specified in outDir of tsconfig.json).

  2. Run the Compiled JavaScript: Navigate to the dist directory (or the directory where JavaScript was output) and run the generated JavaScript code using Node.js:

    cd dist
    node index.js
    

You should see the following output in your terminal:

Greeting: Hello, TypeScript!
Age: 30
Is Active: true
Step 4: Setting Up Routes for a Simple Web Server

For more complex applications, you may want to serve your TypeScript application over HTTP. Let's create a simple web server using Express.js.

  1. Install Express.js: Back in the root directory (ts-primitive-types-demo), install Express.js and TypeScript definitions for Node.js and Express:

    npm install express @types/node @types/express
    
  2. Update tsconfig.json to include Express types:

    {
      "compilerOptions": {
        "target": "ES6",
        "module": "commonjs",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "outDir": "./dist"
      },
      "include": ["src/**/*"],
      "exclude": ["node_modules"]
    }
    
  3. Modify src/index.ts to create an Express server: Replace the current contents of index.ts with the following code:

    import express, { Request, Response } from 'express';
    
    const app = express();
    const PORT = process.env.PORT || 3000;
    
    // Define a string variable
    let greeting: string = "Hello, TypeScript!";
    
    // Define a number variable
    let age: number = 30;
    
    // Define a boolean variable
    let isActive: boolean = true;
    
    // Define a route that returns these values
    app.get('/data', (req: Request, res: Response): void => {
      res.json({ greeting, age, isActive });
    });
    
    // Start the server
    app.listen(PORT, () => {
      console.log(`Server is running on http://localhost:${PORT}`);
    });
    
  4. Compile and Run the Server: Compile the TypeScript code:

    npx tsc
    

    Navigate to the compiled JavaScript files and start the server:

    cd dist
    node index.js
    

Open your web browser and visit http://localhost:3000/data. You should receive the JSON response:

{
  "greeting": "Hello, TypeScript!",
  "age": 30,
  "isActive": true
}

Data Flow Explanation:

  1. Request: Your web browser sends an HTTP GET request to http://localhost:3000/data.
  2. Express Server: The Express server listens for requests on port 3000.
  3. Route Handling: When the /data route is requested, the server's route handler is triggered.
  4. Variable Access: Inside the handler, the predefined greeting, age, and isActive variables are referenced.
  5. Response: A JSON object containing these variables is sent back as the HTTP response.

This simple setup illustrates how you can integrate TypeScript's primitive types into a basic web application.

Summary

By following this step-by-step guide, you've learned how to set up a TypeScript project, utilize its primitive types (string, number, boolean), compile TypeScript code into JavaScript, and create a basic web server using Express.js. As you become more comfortable with these concepts, you can expand your application by adding more routes, handling different HTTP methods, and integrating with databases or external APIs. Happy coding!




Top 10 Questions and Answers on TypeScript Primitive Types: string, number, and boolean

What are primitive types in TypeScript?

In TypeScript, primitive types are the most basic data types that a language can offer. They do not have any properties or methods of their own. The three primary primitive types in TypeScript are string, number, and boolean. Understanding these forms of data is crucial as they serve as the foundation upon which complex data structures are built.


1. How do you declare a variable with string type in TypeScript? Provide an example.

You can explicitly declare a variable with the string type in TypeScript by using the : operator followed by the type. Here’s how it looks:

let userName: string = "JohnDoe";

In this example, userName is declared as a string and assigned the value "JohnDoe". TypeScript will enforce that only string values can be assigned to userName.


2. What happens if you assign a non-string value to a string typed variable? Can you provide an example?

If you try to assign a non-string value to a string typed variable in TypeScript, you will get a compilation error. This helps to avoid runtime errors by providing type safety.

let age: string = 30; // Error: Type 'number' is not assignable to type 'string'.

The TypeScript compiler will throw an error stating that the type 'number' cannot be assigned to a type 'string'. To fix this, you would need to change the type declaration to number:

let age: number = 30;

3. Explain the difference between string and String in TypeScript.

In TypeScript, lowercase string is a primitive type that represents text data. It is the simplest way to work with text in the language. Uppercase String, on the other hand, is a wrapper object that provides helpful methods and properties for working with strings. However, most of the time, you should use the primitive type string.

Example:

let greeting: string = "Hello, TypeScript!";
let strObj: String = new String("Also a string, but wrapped.");

While both variables hold textual data, greeting is of type string, and strObj is of type String (object). In practice, the primitive type string is preferred due to its simplicity and performance.


4. How do you create a number variable in TypeScript?

Creating a number variable in TypeScript is similar to creating a string variable. You specify the type by following the variable name with : number.

let userAge: number = 23;

In this instance, userAge is declared as a number type and is assigned the value 23. TypeScript ensures that only numeric values can be assigned to this variable.


5. Can number type in TypeScript handle both integers and decimals?

Yes, the number type in TypeScript is a unified double-precision 64-bit binary format IEEE 754 value. This means it can hold both whole numbers (integers) and decimal numbers (floating-point numbers).

let count: number = 100;        // Integer
let price: number = 99.99;      // Decimal (floating point)

Both count and price are of type number, demonstrating that the number data type is versatile enough to accommodate integers as well as floating-point numbers.


6. What about hexadecimal and binary literals? Are they also considered as number type?

Absolutely! Hexadecimal and binary literals are also of type number in TypeScript, as they represent numeric values albeit in different bases.

Hexadecimal literals start with 0x or 0X, while binary literals begin with 0b or 0B.

let hexNum: number = 0xff;    // Hexadecimal for 255 in decimal
let binNum: number = 0b1111;  // Binary for 15 in decimal

So yes, regardless of whether the literal is decimal, hexadecimal, or binary, TypeScript treats them as numbers of type number.


7. Could you illustrate the boolean type in TypeScript and where it might be used?

The boolean type in TypeScript represents a truth value, typically used for control flow and decision-making processes in code. There are only two acceptable values: true or false.

Here’s an example:

let isActive: boolean = true;
let isLoggedIn: boolean = false;

if(isActive && isLoggedIn) {
    console.log("User is active and logged in!");
} else {
    console.log("User is either inactive or not logged in.");
}

The isActive and isLoggedIn variables are booleans, which indicate the state of a user regarding activity and login status respectively. These variables are often used in conditional statements like if-else blocks to execute code based on true or false values.


8. Why is it essential to use the boolean type in TypeScript rather than any other type for flags or conditions?

Using the boolean type specifically for flags and conditions makes your code more readable, maintainable, and error-resistant. When you're working with logic, it's clear that a boolean (true or false) indicates a condition or state. Using other types like number or string to represent conditions can lead to misinterpretation and bugs:

let isPremium = 1;               // Poorly defined flag

// Somewhere in the codebase
if(isPremium == true) {
    console.log("User has premium access.");
}

// vs

let isPremium: boolean = true;   // Clearly defined flag

// Somewhere in the codebase
if(isPremium) {
    console.log("User has premium access.");
}

In the first example, isPremium as a number can potentially hold other values besides 1 and 0, leading to confusion and possible bugs if you mistakenly assign values like 2, -1, or "premium" to it. In contrast, the second example clearly communicates that isPremium is meant for a logical condition with only true or false states.


9. How can you check the type of a variable in TypeScript?

You can check the type of a variable at runtime using the typeof operator. However, it’s important to note that TypeScript primarily performs static type checking at compile-time. Using typeof is useful when you’re dealing with JavaScript libraries or dynamic content at runtime, although in many cases, explicit typing makes the need for typeof minimal.

let name: string = "Jane";
let age: number = 28;

console.log(typeof name);  // Output: "string"
console.log(typeof age);   // Output: "number"

But keep in mind that the typeof operator returns the types "string", "number", or "boolean" (among others), which are JavaScript types, whereas the TypeScript types string, number, and boolean are more restrictive and precise. At compile time, TypeScript uses its specific type system to catch type mismatches.


10. How do you perform operations with string, number, and boolean types in TypeScript?

You can perform various operations on these primitive types depending on what makes sense in the context of their respective data types:

  • String Operations: Concatenation, slicing, splitting, replacing, finding substrings, and checking the length.
let firstName: string = "Alice";
let lastName: string = "Johnson";
let fullName: string = firstName + " " + lastName;  // Concatenation
console.log(fullName.length);                         // Length, outputs 13
  • Number Operations: Addition, subtraction, multiplication, division, modulus, increment, decrement, comparison, etc.
let x: number = 10;
let y: number = 5;
let sum: number = x + y;             // Addition, outputs 15
let diff: number = x - y;            // Subtraction, outputs 5
let prod: number = x * y;            // Multiplication, outputs 50
let quot: number = x / y;            // Division, outputs 2
let mod: number = x % y;             // Modulus, outputs 0
let inc: number = x++;               // Increment, outputs 10, then x becomes 11
let dec: number = y--;               // Decrement, outputs 5, then y becomes 4
  • Boolean Operations: Logical AND (&&), OR (||), NOT (!), and comparison operators (===, !==).
let hasAccess: boolean = true;
let isAdmin: boolean = false;
let canMakeChanges: boolean = hasAccess && isAdmin;  // Logical AND, outputs false
let canView: boolean = hasAccess || isAdmin;         // Logical OR, outputs true
let notAdmin: boolean = !isAdmin;                    // Logical NOT, outputs true

Each data type supports specific operations that align with their intended use, making TypeScript a strong candidate for developing robust and type-safe applications.

By mastering these fundamental concepts related to TypeScript’s primitive types, developers can write cleaner, more efficient, and less error-prone code, taking advantage of TypeScript's advanced features for building scalable software solutions.