>PROBLEM
The code below returns the error message:
This condition will always return 'true' since the types 'string' and 'EventEmitter<string>' have no overlap.ts(2367)
*** BAD
crossOffItem(event: EventEmitter<string>): void {
const ritems = this.items.filter( it => it !== event);
this.items = ritems;
}
>SOLUTION
TypeScript complains that the types are not explicitly equivalent or comparable.
*** OK
crossOffItem(event: EventEmitter<string>): void {
const ritems = this.items.filter( it => it !== event.toString());
this.items = ritems;
}
POOR SOLUTION
crossOffItem(event: EventEmitter<string>): void {
const val = event.toString();
const ritems = this.items.filter( it => it !== val);
this.items = ritems;
}
Ah, the classic TypeScript type mismatch strikes again! It's always tricky when the compiler expects a clear type alignment, especially between a string and an EventEmitter. This is a helpful breakdown, especially for beginners really clarifies why direct comparison fails and how simple .toString() can solve the headache. Great walkthrough for anyone debugging something like this with EmailToolTester !
ReplyDelete