The data type 'boolean' cannot be assigned to the type 'never'.ts(2322)

type LemonIndexes = keyof Lemon;

type Lemon = {
   attr1: any,
   attr2: boolean,
   attr3: number
}

...

objects.forEach((obj: { attr__name: keyof Lemon; text__: any; attr__type: any; }) => {

switch (obj.attr__type) {
   case "boolean":
       let attribute_name : keyof Lemon  = obj.attr__name;
       lemon[attribute_name] = getBool(obj.text__);
   case "int":
       let attribute_name : keyof Lemon  = obj.attr__name;
       lemon[attribute_name] = getInt();
   default:
      console.log("object type could not be found.");
  }
});

getBool(bool : string){ // inside of an object so no function keyword
    return bool === 'true';
}
...

I wish to use LemonIndexes as a dynamic variable so I can assign obj[attribute] = value.

If LemonIndexes is only of one type like boolean that works. However, when I introduce a MappedType or a keyof where more than one type is present (see type Lemon), TypeScript throws the following error:

Type 'boolean' is not assignable to type 'never'.ts(2322)

What did I do wrong? Where can I find more information on this issue?


What have you tried? -> I attempted switching out types or using things like LemonIndexesBoolean | LemonIndexesInt or obj: { attr__name , I researched questions on StackOverflow

What were you expecting? -> I was hoping that a Union or Mapped Type would handle this type of scenario


Answer №1

To solve the issue, it was necessary to explicitly convert the type to boolean by using the following syntax:

(zitrone[attribute_name] as boolean) = getBool(obj.text__);

Thank you for taking the time to read and consider this inquiry.

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

Creating a TypeScript definition file to allow instantiation of a module

I'm encountering an issue with creating a declaration file for an existing module. When using JavaScript, the module is imported using the following syntax: var Library = require('thirdpartylibs'); var libInstance = new Library(); I have ...

Change the name of an angular2 component to a string representation of "this"

When using an Angular2 Component, if you execute the following code: console.log (this); You will see the entire object with all its members, for example: "ComponentName {member1, member2, member_n}" Now, I am interested in only logging the ComponentNa ...

Can you explain the significance of <any> when used before a Typescript class constructor parameter?

Currently, I am immersing myself in the Angular - Testing documentation. While going through the section on testing asynchronous services (specifically HTTP services), I came across a class constructor containing an <any> right before the passed argu ...

The category 'Moment' cannot be assigned to the category 'Date'. The characteristic 'toDateString' is not present in the category 'Moment'

I recently integrated moment into my Angular2 application, and encountered an issue when attempting to assign the date of this week's Saturday to a variable of type date, case "weekend": this.fromDate = moment().startOf('week ...

Delegating in Typescript/Angular2 without using an arrow function

Why is the result of TypeScript delegates not equal? someProperty: any; someActionsWithItems(item: any) { this.someProperty = "test"; } // When using 'this', it works fine: this.array.forEach(item => this.someActionsWithItems(item)); / ...

Can someone explain how to create a Function type in Typescript that enforces specific parameters?

Encountering an issue with combineReducers not being strict enough raises uncertainty about how to approach it: interface Action { type: any; } type Reducer<S> = (state: S, action: Action) => S; const reducer: Reducer<string> = (state: ...

populate a data list with information sourced in Angular 8

I am looking to populate this model oldDataSource: Array<any> = []; with the values from the datasource. This is the code I have tried: ngOnInit(): void { this.dataSourceInit(); } dataSourceInit(): void { this.dataSource = new DefaultScore ...

Encountering an initialization error with Ionic 2 modal controller: Unable to access the create attribute of an undefined object

I've been trying to implement a modal page in Ionic 2 from my home page, but I keep encountering this error: TypeError: Cannot read property 'create' of undefined at HomePage.showModal (http://localhost:8100/build/main.js:52608:35) at Compi ...

Determining changes in an object with Angular 2 and Ionic 2

Q) How can I detect changes in an object with multiple properties bound to form fields without adding blur events to each individual field? I want to avoid cluttering the page with too many event listeners, especially since it's already heavy. For e ...

Tips for creating React/MobX components that can be reused

After seeing tightly coupled examples of integrating React components with MobX stores, I am seeking a more reusable approach. Understanding the "right" way to achieve this would be greatly appreciated. To illustrate my goal and the challenge I'm fac ...

How can Vue be used to dynamically change the input type on focus?

What Vue method do you recommend for changing an input element's type on focus? e.g. onfocus="this.type = 'date'" I am specifically looking to switch the input type from text to date in order to utilize the placeholder property. ...

Develop a query builder in TypeORM where the source table (FROM) is a join table

I am currently working on translating this SQL query into TypeORM using the QueryBuilder: SELECT user_places.user_id, place.mpath FROM public.user_root_places_place user_places INNER JOIN public.place place ON place.id = user_places.place_id The ...

Is it possible to generate assets or files in Angular 4 based on different environments?

Is it possible to generate assets/files on build in our Angular app using environment variables? We are looking to create an 'auth/settings.js' file in the assets folder with client id's and apiUrl's unique to each environment. These v ...

"Exploiting the Power of Nullish Coalescing in Functional

The interface I am working with is defined below: interface Foo { error?: string; getError?: (param: any) => string } In this scenario, we always need to call the function getError, but it may be undefined. When dealing with base types, we can us ...

Exploring the use of global variables in React

Welcome to my React learning journey! I've encountered an issue while trying to access a global variable exposed by a browser extension that I'm using. Initially, I attempted to check for the availability of the variable in the componentDidMount ...

Exploring Angular2 Guides: Understanding Hierarchical Dependency Injection with a Focus on Service Restoration

As I delved into the Angular2 documentation, a specific example caught my eye in the Hierarchical Dependency Injectors chapter. It introduced me to the Restore service, which enables save/cancel functionality for editing. The code for this service is as f ...

Cannot perform table inserts or creates with NestJS Sequelize functionality

I am currently in the process of setting up a small web server with a MySQL database. To achieve this, I am utilizing NestJs along with Sequelize. However, as I am still in the learning phase, I seem to be encountering an error: Within my database, I have ...

Executing an individual .ts file within a Next.js application using ts-node for the purpose of testing

I'm attempting to execute a single ES module .ts file within a Next.js project using the default configuration for quick debugging: npx ts-node lib/my_module.ts However, I encounter the following error: Warning: To load an ES module, set "type&q ...

Customizing page layout for pages wrapped with higher-order components in TypeScript

Looking to add a layout to my page similar to the one in this link: layouts#per-page-layouts The difference is that my page is wrapped with a HOC, so I tried applying getLayout to the higher order component itself like this: PageWithAuth.getLayout Howev ...

The extend keyword in TypeScript causing issues with type inference

Why is TypeScript showing an error in the code below? type A = { kind: "a" } type B = { kind: "b" } const a = (a: A): void => undefined const b = (b: B): void => undefined const c = <C extends A | B>(c: C): void => (c.kind == "a" ? a(c) : ...