Alert in Typescript: "Consider using an interface instead of a type literal"

When linting my code, a TS warning is triggered regarding the definition of InternalStateType

 [line 8]    export type InternalStateType = {
              [key: string]: any,
              appName: string,
              darkMode: boolean,
              defaultLang: string,
              topnavTitle: string,
              messagePanelOpen: boolean,
              sidenavOpen: boolean,
              sidenavMode: string,
              sidenavCollapse: boolean,
              pageFullscreen: boolean,
              pageFooter: boolean,
              initial: boolean,
            };

The InternalStateType is utilized in the App service

/**
 * App service
 */
@Injectable()
export class AppService {

  // Set your states default value.
  private state: InternalStateType = {
    appName: 'MyApp',
    darkMode: false,
    defaultLang: 'en',
    topnavTitle: 'MyApp',
    messagePanelOpen: false,
    sidenavOpen: false,
    sidenavMode: 'over',
    sidenavCollapse: true,
    pageFullscreen: false,
    pageFooter: false,
    initial: false,
  };

Does this suggest that it would be more beneficial to replace:

export type InternalStateType = {

with:

export interface InternalStateType {

Answer №1

If anyone is interested, it's important to note that

export interface InternalStateType {

should not include an equal sign.

For more information, check out the documentation.

Answer №2

Indeed, that seems to be the situation.

It is unnecessary to designate InternalStateType as a class in this scenario; an interface suffices since it lacks any distinct behavior and simply serves as a DTO-type structure.

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Understanding the basics of reading a JSON object in TypeScript

Displayed below is a basic JSON structure: { "carousel": [], "column-headers": [{ "header": "Heading", "text": "Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id el ...

The functionality of linear mode seems to be malfunctioning when using separate components in the mat-horizontal-stepper

In an effort to break down the components of each step in mat-horizontal-stepper, I have included the following HTML code. <mat-horizontal-stepper [linear]="true" #stepper> <mat-step [stepControl]="selectAdvType"> <ng-template matStep ...

Issue with ESLint error in TypeScript PrimeReact async Button click handler

I am currently facing an issue with exporting data from a DataTable in PrimeReact. The onClick function for the Button does not allow async callbacks as flagged by eslint. Can someone guide me on how to properly call this function? const exportCSV = us ...

Experiencing issues with Typescript typings.d.ts due to parsing error

Whenever I try to lint my TypeScript code, I encounter a parsing error: 2:3 error Parsing error: Only declares and type imports are allowed inside declare module 1 | declare module "*.json" { > 2 | var value: any; | ^ 3 | export defa ...

What is the best way to check for duplicate email input when using knex?

Currently, I am in the process of developing an application using node.js, knex.js, typescript, zod, and fastify. My main focus is on validating emails during user registration. If a duplicate email is inserted, I want the system to throw a 401 (conflict) ...

Exploring Angular: How to implement a listener to detect when data (such as a video) is loaded and trigger actions

I'm currently working on displaying a video in my Angular page and I'm trying to set the currentTime property of the video to start playing at a specific time. In JavaScript, you can achieve this with the following example: document.getElementBy ...

Is it possible to store any array of strings in localStorage?

I'm trying to save a list of addresses in local storage, like this: addresses["1 doe st, england","2 doe st, england", "3 doe st, england"] Each time I click on an address, I want it to be added to the array in local storage. However, my current imp ...

How can I suggest the return type of a function that is out of my control?

When I attempt to parse a JSON-formatted string, a linter error is triggered: let mqttMessage = JSON.parse(message.toString()) // ESLint: Unsafe assignment of an `any` value. (@typescript-eslint/no-unsafe-assignment) Given that I am in control of the con ...

Guide on setting up a route in Next.js

Recently, I developed a simple feature that enables users to switch between languages on a webpage by adding the language code directly after the URL - i18n-next. Here's a snippet of how it functions: const [languages, ] = React.useState([{ langua ...

Retrieve all items that match the ids in the array from the database

I'm having trouble receiving a list of items that match with my array of ids. Here's a snippet from the Angular component code: this.orderService.getSpecyficOrders(ids) .subscribe(orders => { ... Where ids is an array of [{_id : ID }, ...

Ensuring Type Compatibility Between Classes and Object Literals in TypeScript

When working with TypeScript, it is important to note that an object literal can be assigned to a class typed variable as long as the object provides all properties and methods required by the class. class MyClass { a: number; b: string; } // The co ...

What is the best way to handle asynchronous actions while initializing a database in Next.js?

My goal is to create tables during the database initialization stage with a structure like this: CREATE TABLE IF NOT EXISTS users ( "id" SERIAL PRIMARY KEY, "created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, "name&quo ...

A guide on refreshing the dependencies list within Angular's node modules and package.json files

A close friend sent me the angular src folder, which I used to create a new Angular project. However, when I replaced my newly created src folder with my friend's and tried running the application using npm start, I encountered errors related to missi ...

Creating a OneToMany relationship in NestJS entity model

In my current project with NestJS, I am working on defining entity fields. While I have successfully defined a ManyToOne relation, I am facing difficulties in setting up the syntax for a OneToMany relation to match the structure of my other relationships. ...

Incorporating Kekule.js into a TypeScript-based React application

Greetings, community! I've created a React app designed to help individuals in the field of chemistry share their work. To facilitate this, I came across a library called Kekule.js Here is the link Utilizing TypeScript poses a challenge as it requir ...

Exporting third party definitions from a TypeScript npm module for reuse in other projects

Our custom npm logging module, which is built using TypeScript and relies on the pino library, encounters errors when being imported into an application: Error: node_modules/@scope/logging/lib/index.d.ts(1,23): error TS2688: 'pino' type definiti ...

What is the best way to include a Web Service within an export variable in Angular 2 using TypeScript?

Is there a way to incorporate JSON data retrieved from the server into the export var HEROES: Hero[ ] function? Here is the link: https://angular.io/resources/live-examples/toh-5/ts/eplnkr.html In app/mock-heroes.ts, you will find the following data, im ...

Issue with Angular select not successfully binding to enum value

I am facing an issue with my component.ts file. Here is the code snippet: import {Component, OnInit} from '@angular/core'; import {IBook} from "../../models/book.model"; import {ActivatedRoute} from "@angular/router"; impor ...

What is the best way to set a variable as true within a pipeline?

Could someone assist me with a coding issue I'm facing? If the id is null, I need variable x to be true. I am unable to use if and else statements within the pipe. Any guidance would be greatly appreciated. private x = false; private y = false; n ...

Tips on implementing zod schema types with remapped fields using the toZod method

I'm currently working on mapping a schema key to a different name in my database interface Country { isoCode: string, nameEn: string, nameDe: string, phone: string, bla: string } const CountryJson = { i ...