@@ -152,6 +152,7 @@ export type MessageId =
152
152
| 'neverOptionalChain'
153
153
| 'noOverlapBooleanExpression'
154
154
| 'noStrictNullCheck'
155
+ | 'suggestRemoveOptionalChain'
155
156
| 'typeGuardAlreadyIsType' ;
156
157
157
158
export default createRule < Options , MessageId > ( {
@@ -164,7 +165,7 @@ export default createRule<Options, MessageId>({
164
165
recommended : 'strict' ,
165
166
requiresTypeChecking : true ,
166
167
} ,
167
- fixable : 'code' ,
168
+ hasSuggestions : true ,
168
169
messages : {
169
170
alwaysFalsy : 'Unnecessary conditional, value is always falsy.' ,
170
171
alwaysFalsyFunc :
@@ -184,6 +185,7 @@ export default createRule<Options, MessageId>({
184
185
'Unnecessary conditional, the types have no overlap.' ,
185
186
noStrictNullCheck :
186
187
'This rule requires the `strictNullChecks` compiler option to be turned on to function correctly.' ,
188
+ suggestRemoveOptionalChain : 'Remove unnecessary optional chain' ,
187
189
typeGuardAlreadyIsType :
188
190
'Unnecessary conditional, expression already has the type being checked by the {{typeGuardOrAssertionFunction}}.' ,
189
191
} ,
@@ -863,9 +865,14 @@ export default createRule<Options, MessageId>({
863
865
loc : questionDotOperator . loc ,
864
866
node,
865
867
messageId : 'neverOptionalChain' ,
866
- fix ( fixer ) {
867
- return fixer . replaceText ( questionDotOperator , fix ) ;
868
- } ,
868
+ suggest : [
869
+ {
870
+ messageId : 'suggestRemoveOptionalChain' ,
871
+ fix ( fixer ) {
872
+ return fixer . replaceText ( questionDotOperator , fix ) ;
873
+ } ,
874
+ } ,
875
+ ] ,
869
876
} ) ;
870
877
}
871
878
0 commit comments