diff --git a/lib/utils/ts-ast-utils.js b/lib/utils/ts-ast-utils.js index dcc6c7cf5..f5cf9691a 100644 --- a/lib/utils/ts-ast-utils.js +++ b/lib/utils/ts-ast-utils.js @@ -260,23 +260,21 @@ function inferRuntimeType(context, node, checked = new Set()) { return ['Array'] case 'TSLiteralType': - switch (node.literal.type) { - //@ts-ignore ? - case 'StringLiteral': - return ['String'] - //@ts-ignore ? - case 'BooleanLiteral': - return ['Boolean'] - //@ts-ignore ? - case 'NumericLiteral': - //@ts-ignore ? - // eslint-disable-next-line no-fallthrough - case 'BigIntLiteral': - return ['Number'] - default: - return [`null`] + if (node.literal.type === 'Literal') { + switch (typeof node.literal.value) { + case 'boolean': + return ['Boolean'] + case 'string': + return ['String'] + case 'number': + case 'bigint': + return ['Number'] + } + if (node.literal.value instanceof RegExp) { + return ['RegExp'] + } } - + return [`null`] case 'TSTypeReference': if (node.typeName.type === 'Identifier') { const variable = findVariable(context.getScope(), node.typeName.name) diff --git a/tests/lib/rules/require-valid-default-prop.js b/tests/lib/rules/require-valid-default-prop.js index e353edf58..c08a0403a 100644 --- a/tests/lib/rules/require-valid-default-prop.js +++ b/tests/lib/rules/require-valid-default-prop.js @@ -252,6 +252,29 @@ ruleTester.run('require-valid-default-prop', rule, { parserOptions: { ecmaVersion: 6, sourceType: 'module' }, parser: require.resolve('@typescript-eslint/parser'), errors: errorMessage('function') + }, + { + // https://github.com/vuejs/eslint-plugin-vue/issues/1853 + filename: 'test.vue', + code: ``, + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + parser: require.resolve('@typescript-eslint/parser') + }, + parser: require.resolve('vue-eslint-parser') } ],