Skip to content

⬅️ Back to Table of Contents

πŸ“„ no-dynamic-delete

πŸ“Š Analysis Summary

Metric Count
πŸ”§ Functions 2
πŸ“¦ Imports 3

πŸ“š Table of Contents

πŸ› οΈ File Location:

πŸ“‚ packages/eslint-plugin/src/rules/no-dynamic-delete.ts

πŸ“€ Default Export

export default createRule({ ... })
Property Value
name 'no-dynamic-delete'
meta.type 'suggestion'
meta.docs.description 'Disallow using the delete operator on computed key expressions'
meta.docs.recommended 'strict'
meta.messages.dynamicDelete 'Do not delete dynamically computed property keys.'
meta.schema []
defaultOptions []

Entry point: create β€” documented under Functions.


πŸ“¦ Imports

Name Source
TSESTree @typescript-eslint/utils
AST_NODE_TYPES @typescript-eslint/utils
createRule ../util

Functions

create(context: any): { 'UnaryExpression[operator=delete]'(node: TSESTree.UnaryEx…

Parameters:

  • context any

Returns: { 'UnaryExpression[operator=delete]'(node: TSESTree.UnaryExpression): void; }

Calls:

  • isAcceptableIndexExpression
  • context.report
Code
create(context) {
    return {
      'UnaryExpression[operator=delete]'(node: TSESTree.UnaryExpression): void {
        if (
          node.argument.type !== AST_NODE_TYPES.MemberExpression ||
          !node.argument.computed ||
          isAcceptableIndexExpression(node.argument.property)
        ) {
          return;
        }

        context.report({
          node: node.argument.property,
          messageId: 'dynamicDelete',
        });
      },
    };
  }

isAcceptableIndexExpression(property: TSESTree.Expression): boolean

Parameters:

  • property TSESTree.Expression

Returns: boolean

Calls:

  • ['number', 'string'].includes
Code
function isAcceptableIndexExpression(property: TSESTree.Expression): boolean {
  return (
    (property.type === AST_NODE_TYPES.Literal &&
      ['number', 'string'].includes(typeof property.value)) ||
    (property.type === AST_NODE_TYPES.UnaryExpression &&
      property.operator === '-' &&
      property.argument.type === AST_NODE_TYPES.Literal &&
      typeof property.argument.value === 'number')
  );
}

Generated by Syntax Scribe