fix(44448): disallow 'delete' operator for optional properties (#44612)

This commit is contained in:
Oleksandr T
2021-06-30 02:56:45 +03:00
committed by GitHub
parent 4c19873b64
commit 5c8d76347c
16 changed files with 841 additions and 48 deletions

View File

@@ -31409,8 +31409,9 @@ namespace ts {
}
function checkDeleteExpressionMustBeOptional(expr: AccessExpression, type: Type) {
const AnyOrUnknownOrNeverFlags = TypeFlags.AnyOrUnknown | TypeFlags.Never;
if (strictNullChecks && !(type.flags & AnyOrUnknownOrNeverFlags) && !(getFalsyFlags(type) & TypeFlags.Undefined)) {
if (strictNullChecks &&
!(type.flags & (TypeFlags.AnyOrUnknown | TypeFlags.Never)) &&
!(exactOptionalPropertyTypes ? 0 : getFalsyFlags(type) & TypeFlags.Undefined)) {
error(expr, Diagnostics.The_operand_of_a_delete_operator_must_be_optional);
}
}

View File

@@ -136,6 +136,7 @@ namespace Harness {
"skipDefaultLibCheck",
"preserveConstEnums",
"skipLibCheck",
"exactOptionalPropertyTypes"
];
private fileName: string;
private justName: string;