Type string undefined is not assignable to type string

Are you getting this error: “Type string undefined is not assignable to type string“? Yes, you have come to the right place. Today I will show you how to solve this error.

The error “type undefined is not assignable to type string” occurs when you assign an undefined value when the string is required. To solve this error, use the non-null assertion operator to make sure that the value is a string before the assignment.

Here is an example of this error:

interface Employee {
  id: number;
  name?: string;
  salary: number;
}

const emp: Employee = {
  id: 1,
  name: 'Ehtisham',
  salary: 518,
};

// type string undefined is not assignable to type string
// type 'string' is not assignable to type 'number'
// type 'undefined' is not assignable to type 'string'

const name: string = emp.name;

The ‘name‘ property is marked as optional (You can see the “?” with name) in the interface named ‘Employee‘. This means that the property can store ‘String‘ and “Undefined‘.

But the “name‘ variable is typed as a string you can see the last line in the above example. So it only expects the string but we may get the ‘Undefined‘ because we set the property optional.

Fixed: How to fix Error: legacy-install-failure

With this error, TypeScript is telling us that the ‘emp.name‘ property value might be undefined, But undefined values are not compatible with the variable “name“, which only expects a string.

Here are some solutions you can apply to get rid of this error.

[Fixed]: type string undefined is not assignable to type string

You can use the ‘exclamation mark’ with the ‘emp.name‘ to this will tell Typescript that the value will never be NULL or UNDEFINED.

The ‘Exclamations Mark‘ in TypeScript is called ‘non-null assertion‘.

interface Employee {
  id: number;
  name?: string;
  salary?: number;
}

const emp: Employee = {
  id: 1,
  name: 'Ehtisham',
  salary: 518,
};

const name: string = emp.name!; // non-null assertion

[Solution]: Using ‘If” statement:

Another solution to this error is to use the ‘If‘ statement before the assignment of value to a variable.

interface Employee {
  id: number;
  name?: string;
  salary?: number;
}

const emp: Employee = {
  id: 1,
  name: 'Ehtisham',
  salary: 518,
};

let name = '';


if (emp.name !== undefined) {
  name = emp.name;
}

[Solved]: Using Type Guard:

We can solve this error “type ‘undefined’ is not assignable to type ‘string’” using the Type Guard to make sure that the value is not NULL or Undefined before assignment.

We will use the Ternary operator to check the ‘value‘ as shown in the example below.

interface Employee {
  id: number;
  name?: string;
  salary?: number;
}

const emp: Employee = {
  id: 1,
  name: 'Ehtisham',
  salary: 518,
};

const name: string = emp.name !== undefined ? emp.name : '';

Conclusion on Type string undefined is not assignable to type string

Programmers, We solved the error “type string undefined is not assignable to type string“. To solve this error, use the non-null assertion operator to make sure that the value is a string before the assignment. If you tried these solutions but still getting the error please let us know in the comments section.

Leave a Reply