How to declare an array of objects in Angular|typescript

This example covers the Angular example in typescript.

  • Declare and Initialize an array of objects with values
  • Array of Type
  • Using an interface to hold an array of objects

An array of objects is populated and displayed on the Dropdown or radio button display.

There are multiple ways we can create an array of objects.

How to declare and Initialize an array of objects with values

Declare and initialize an array using the any/object type declared as follows

Objects are properties that contain keys and values, There is no type to represent the object in Typescript and angular.

An array of strings can be declared and initialized with the below syntax.

private arrays:Array<string> = ['one','two','three'];

In typescript, an Object can be declared using the any type.

  public books: Array<any> = [
    { title: "book1", description: "book desc 1" },
    { title: "book2", description: "book desc 2" },
    { title: "book3", description: "book desc 3" },
    { title: "book4", description: "book desc 4 " }
  ];

The same replaced any with the object type.

    public books: Array<object> = [
    { title: "book1", description: "book desc 1" },
    { title: "book2", description: "book desc 2" },
    { title: "book3", description: "book desc 3" },
    { title: "book4", description: "book desc 4 " }
  ];

Array of type alias object

In Angular using the type keyword in typescript allows for creating new alias for custom type.

Created employee object alias and created an array of type alias.

type Employee = Array<{ id: number, name: string }>;

In the below example

  • Created employee alias of array type
  • Initialized array with object values
import { Component, OnInit } from "@angular/core";

@Component({
  selector: "app-basic",
  templateUrl: "./basic.component.html",
  styleUrls: ["./basic.component.css"],
})
export class BasicComponent implements OnInit {
  employees: Employee = [
    { id: 1, name: "Ram" },
    { id: 2, name: "John" },
    { id: 3, name: "Franc" },
    { id: 4, name: "Andrew " },
  ];
  constructor() {}

  ngOnInit() {}
}
type Employee = Array<{ id: number, name: string }>;
<ul>
  <li *ngFor="let emp of employees">{{emp.name}}</li>
</ul>

The same syntax can be rewritten using a shorter version.

const employees: Array<{ id: number, name: string }> = [
  { id: 1, name: "Ram" },
  { id: 2, name: "John" },
  { id: 3, name: "Franc" },
  { id: 4, name: "Andrew " },
];

Declare an array of objects using the interface type

The above approach has some drawbacks if the object contains multiple properties and it is difficult to handle.

This approach creates an interface to hold object data in angular and typescript codebase. It is useful to handle data coming from the backend/database via REST APIs.

You can create an interface using the below command.

ng g interface Book

It generates a book.ts file

export interface Book {
  id: number;
  name: string;

  constructor(id,name) {
      this.id = id;
      this.name = name;
    }
}

In the Angular typescript component, You can create an interface for Book

import { Component, OnInit } from "@angular/core";
import {Book} from './Book'
@Component({
  selector: "app-basic",
  templateUrl: "./basic.component.html",
  styleUrls: ["./basic.component.css"]
})
export class BasicComponent implements OnInit {
  public books: Book[] = [
    { id: 1, name: "Book 1" },
    { id: 2, name: "Book 2" },
    { id: 3, name: "Book 3" },
    { id: 4, name: "Book 4 " }
  ];
  constructor() {}

  ngOnInit() {}
}