From 344bafe5c7b17611f496de52f10c0ed556fe81c7 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Wed, 28 Aug 2019 03:32:18 +1000 Subject: [PATCH] fix(eslint-plugin): [unbound-method] Allow typeof expressions (Fixes #692) (#904) --- packages/eslint-plugin/src/rules/unbound-method.ts | 3 +++ packages/eslint-plugin/tests/rules/unbound-method.test.ts | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/packages/eslint-plugin/src/rules/unbound-method.ts b/packages/eslint-plugin/src/rules/unbound-method.ts index c76ac76f9d0..8be7a842c46 100644 --- a/packages/eslint-plugin/src/rules/unbound-method.ts +++ b/packages/eslint-plugin/src/rules/unbound-method.ts @@ -120,6 +120,9 @@ function isSafeUse(node: TSESTree.Node): boolean { case AST_NODE_TYPES.TaggedTemplateExpression: return parent.tag === node; + case AST_NODE_TYPES.UnaryExpression: + return parent.operator === 'typeof'; + case AST_NODE_TYPES.TSNonNullExpression: case AST_NODE_TYPES.TSAsExpression: case AST_NODE_TYPES.TSTypeAssertion: diff --git a/packages/eslint-plugin/tests/rules/unbound-method.test.ts b/packages/eslint-plugin/tests/rules/unbound-method.test.ts index 061b4edf524..2c0d1aaf188 100644 --- a/packages/eslint-plugin/tests/rules/unbound-method.test.ts +++ b/packages/eslint-plugin/tests/rules/unbound-method.test.ts @@ -97,6 +97,12 @@ instane.boundStatic && 0; ContainsMethods.boundStatic ? 1 : 0; ContainsMethods.unboundStatic ? 1 : 0; + +typeof instance.bound === 'function'; +typeof instance.unbound === 'function'; + +typeof ContainsMethods.boundStatic === 'function'; +typeof ContainsMethods.unboundStatic === 'function'; `, `interface RecordA { readonly type: "A"