Number is assignable to enum, even inside union

Previously, numbers were not assignable to enums that were inside a
union
This commit is contained in:
Nathan Shively-Sanders 2016-09-08 11:16:45 -07:00
parent ed69a8a161
commit f0b210cb59

View file

@ -6227,6 +6227,9 @@ namespace ts {
if (relation === assignableRelation || relation === comparableRelation) {
if (source.flags & TypeFlags.Any) return true;
if (source.flags & (TypeFlags.Number | TypeFlags.NumberLiteral) && target.flags & TypeFlags.Enum) return true;
if (source.flags & (TypeFlags.Number | TypeFlags.NumberLiteral) &&
target.flags & TypeFlags.Union &&
forEach((target as UnionType).types, t => t.flags & TypeFlags.EnumLike)) return true;
if (source.flags & TypeFlags.NumberLiteral && target.flags & TypeFlags.EnumLiteral && (<LiteralType>source).text === (<LiteralType>target).text) return true;
}
return false;