When excluding a type from an unlimited type , it should calculate excluded type first but it doesnt. For example: ```ts type NonZ = Exclude<string, 'Z'>; const myval: NonZ = 'Z'; // doesnt give any error ``` Because of this bug many other bugs happens like : ```ts interface HasNotZ { [key: NonZ]: number } const MyObj : HasNotZ = { Z: 123 // is still valid .... Should give an error } ```