In Typescript, mismatched index types do not result in errors being thrown

Why doesn't TypeScript raise an error or warning in the following code snippet? In the index type for map["xx"], it is specified as string, but in the map signature it's defined as number. Should any configuration be set in tsconfig to address this issue?

let map: { [index: number]: string } = { };

map["xx"] = "2000";

Answer №1

If you have not set strict: true or noImplicitAny: true in your tsconfig.json, it is completely normal for the index in bracket notation to be treated as any.

For more details on this issue, you can refer to:

https://github.com/microsoft/TypeScript/issues/7660

You can view the outcome before and after enabling noImplicitAny in this playground:

  1. Without noImplicitAny, no error will occur.
  2. With noImplicitAny, an error will be prompted regarding map["xx"]

P.S. You have the option to use either noImplicitAny: true or strict: true, with strict mode encompassing noImplicitAny and 6 additional implicit checks. Refer to the typescript documentation for further information.


While strict mode is not the default setting due to migration concerns and legacy issues, the TypeScript team highly recommends enabling strict: true in their thoughts on using strict mode in TypeScript.

Indeed, by default, TypeScript's tsconfig does not enable strict mode. However, whenever possible, our team encourages users to transition towards incorporating strict mode into their configurations.

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

Leverage the power of React, Material-UI, and Typescript to inherit button props and incorporate a variety of unique

Looking to enhance the Material-UI button with additional variants like "square." How can I create a prop interface to merge/inherit props? Check out the following code snippet: import React from "react"; import { Button as MuiButton } from "@material-u ...

Encountered compilation errors while trying to compile the entry-point @ng-bootstrap/ng-bootstrap with `es2015` as esm2015. Compilation was unsuccessful

Seeking assistance in resolving the errors provided below. I am currently in the process of upgrading my angular project from version 8 to 12. Initially, I attempted to upgrade progressively from version to version, starting with "7 to 8, 8 to 9". However ...

Encountering a problem with Angular 11 SSR after compilation, where the production build is causing issues and no content is being displayed in

{ "$schema":"./node_modules/@angular/cli/lib/config/schema.json", "version":1, "newProjectRoot":"projects", "projects":{ "new-asasa":{ "projectType": ...

Is there a way in Typescript to convert an array of variables from class A to class B, where class B is an extension of class A?

Hopefully this question is unique, as I couldn't find anything similar. I have created a definition for Array<Tag>, but now I want to change it to Array<TogglableTag>. The only difference between the two classes is an additional property. ...

Adding corresponding classes to the body element based on the selected radio button in Angular 6

Is there a way to dynamically add a class to the body tag and the parent element when clicking on radio buttons? For example, consider the following code snippet: <form action=""> <input type="radio" value="layout1">Layout 1<br> <i ...

Backend server encountered an issue with processing punycode

[ALERT] 18:13:52 Server Restarting Prompt: C:\Code\MERN_Projects\podify_app\server\src\db\index.ts has been altered (node:22692) [DEP0040] DeprecationWarning: The punycode module is outdated. Consider utilizing a modern a ...

Angular translation for datetimepicker

Looking to implement a datepicker that allows selecting the hours, so I decided to add an Angular component. After searching, I found the perfect component: https://www.npmjs.com/package/angular-bootstrap-datetimepicker Although this component is original ...

Convert an array with three dimensions into a two-dimensional array that includes tuples with two immutable string values

Consider the array below with multiple dimensions: type ParsedLine = [string, string]; type ParsedLines = [ParsedLine, ParsedLine] const myArray: (ParsedLine | ParsedLines)[] = [ ['something', 'somethingElse'], [['foo', & ...

Having constant problems with ngModel twoway binding. Any suggestions on how to successfully bind to a property in order to update an api link?

I am attempting to implement two-way binding in order to dynamically change the API endpoint when a button is clicked. The value attribute of the button should be used as part of the API URL string. I tried following an example in the Hero Angular App, bu ...

Creation of source map for Ionic 2 TypeScript not successful

Struggling with debugging my Ionic 2 application and in need of guidance on how to include souceMap for each typescript file that corresponds to the javascript files. Despite enabling "sourceMap":true in my tsconfig.json file, the dev tools in Chrome do n ...

The 'getAllByRole' property is not found in the 'Screen' type. TS2339 error

I am currently developing a web application using ReactJs for the front end. While testing the code, I encountered the following error: TypeScript error in My_project/src/unitTestUtils.tsx(79,27): Property 'getAllByRole' does not exist on type & ...

Discover the use of dot notation for accessing nested properties

In the deps array below, I aim to enforce type safety. Only strings allowed should be in dot notation of ${moduleX}.${moduleX service} // Modules each have a factory function that can return a services object (async) createModules({ data: { factory: ...

Ways to incorporate forms.value .dirty into an if statement for an Angular reactive form

I'm a beginner with Angular and I'm working with reactive Angular forms. In my form, I have two password fields and I want to ensure that only one password is updated at a time. If someone tries to edit both Password1 and Password2 input fields s ...

Creating Multiple Routes in a Single TypeScript and AngularJS Route File

I have built a module with TypeScript and AngularJS that includes multiple pages. I would like to use one TypeScript controller per page. How can I define multiple controllers in my routes? Currently, I have only defined one, but what if I have 6 or 7 co ...

Assign the chosen value to the dropdown list if ngModel is present

I currently have a select field implemented in my Angular component: <select class="form-control" [(ngModel)]="myClient.address && myClient.address.state" name="state" (ngModelChange)="getCitiesByState($event)"> <option class="form-con ...

Tips for identifying the load window in Ionic 2 RC3 Angular 2

In the various services that I am using, I implement a method to load content. Each service has its own loadController to display a loading window. How can I detect if a loading window already exists in order to prevent showing a new one? *Please note: I ...

Is there a way to determine if a route, or any of its nested routes, are currently active

Consider the following route examples: <Routes> <Route path="admin"> <Route path="users"> <Route index element={<UserList />} /> <Route path="create" element={<UserDetails ...

Guide on integrating angular-schema-form into an Ionic 2.0 project using typescript

Recently, I embarked on creating an app with Ionic from scratch and decided to integrate the framework. While I faced no issues executing the example on a webpage, I encountered difficulties when attempting to do so with Ionic. To kickstart the project, ...

Struggling to synchronize the newly updated Products List array in zustand?

Let me clarify the scenario I am dealing with so you can grasp it better. I have a Cart and various Products. When a user adds the product (product_id = 1) twice to the cart with the same options (red, xl), I increase the quantity of that item. However, i ...

Displaying multiple items horizontally using ngFor

I am having trouble organizing my data using the *ngFor loop. I would like to have three items displayed per row when using ngFor. I attempted to use indexing, but it only resulted in one item per row. <div class="container"> <div class="row"&g ...