diff --git a/src/rules/readonly-type.ts b/src/rules/readonly-type.ts index 5f98ff212..426778886 100644 --- a/src/rules/readonly-type.ts +++ b/src/rules/readonly-type.ts @@ -178,14 +178,16 @@ function checkTypeLiteral( } if (mode === "generic") { - const needsWrapping = node.members.every( - (member) => - (isPropertyDefinition(member) || - isTSIndexSignature(member) || - isTSParameterProperty(member) || - isTSPropertySignature(member)) && - member.readonly, - ); + const needsWrapping = + node.members.length > 0 && + node.members.every( + (member) => + (isPropertyDefinition(member) || + isTSIndexSignature(member) || + isTSParameterProperty(member) || + isTSPropertySignature(member)) && + member.readonly, + ); if (needsWrapping) { return { diff --git a/tests/rules/readonly-type/ts/valid.ts b/tests/rules/readonly-type/ts/valid.ts index acd28f581..f0e0c85d4 100644 --- a/tests/rules/readonly-type/ts/valid.ts +++ b/tests/rules/readonly-type/ts/valid.ts @@ -73,6 +73,13 @@ const tests: Array>> = [ `, optionsSet: [["keyword"]], }, + // Empty should not cause issues + { + code: dedent` + type Foo = {}; + `, + optionsSet: [["keyword"], ["generic"]], + }, ]; export default tests;