When working with Typescript, the error messages for checking different types are quite impressive:
let strange_boolean = true;
let strange_string: string = "1";
console.log(strange_boolean == strange_string);
error: TS2367 [ERROR]: This condition will always return 'false' since the types 'boolean' and 'string' have no overlap.
console.log(strange_boolean == strange_string);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Surprisingly, this code still compiles successfully:
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(strange_boolean == strange_string);
This is because any
can be converted to anything
...
However, what if I want to completely disable implicit conversions from any
to anything else?
Is there a flag in Typescript that allows for that restriction?
I would like the code to compile only under these conditions:
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(String(strange_boolean) == strange_string);
or
let strange_boolean: any = true;
let strange_string: string = "1";
console.log(Boolean(strange_boolean) == Boolean(strange_string));