Skip to content

Commit 154e1ee

Browse files
committed
feat(no-useless-default-assignment): skip unresolved type parameters (#859)
1 parent 824bd6c commit 154e1ee

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

internal/rules/no_useless_default_assignment/no_useless_default_assignment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ var NoUselessDefaultAssignmentRule = rule.Rule{
441441

442442
if !utils.IsSymbolFlagSet(paramSymbol, ast.SymbolFlagsOptional) {
443443
paramType := checker.Checker_getTypeOfSymbol(ctx.TypeChecker, paramSymbol)
444-
if !canBeUndefined(paramType) {
444+
if !utils.IsTypeParameter(paramType) && !canBeUndefined(paramType) {
445445
reportUselessDefaultAssignment(node, "parameter", paramType)
446446
}
447447
}

internal/rules/no_useless_default_assignment/no_useless_default_assignment_test.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,15 @@ func TestNoUselessDefaultAssignmentRule(t *testing.T) {
189189
{
190190
Code: "\n class AbstractEntity {\n public a: string | undefined;\n public static fromJson<T extends { a: string }>(\n this: new () => T,\n { inner = { a: 'test' } }: { inner?: { a: string } },\n ): T {\n const entity = new this();\n entity.a = inner?.a;\n return entity;\n }\n }\n ",
191191
},
192+
{
193+
Code: "\n type FetchFn<TParams> =\n Partial<TParams> extends TParams\n ? (params?: TParams) => void\n : (params: TParams) => void;\n\n function createFetcher<TParams>() {\n type Params = TParams;\n\n const fn: FetchFn<TParams> = (\n params: Partial<Params> = {} as Partial<Params>,\n ) => {\n console.log(params);\n };\n\n return fn;\n }\n ",
194+
},
195+
{
196+
Code: "\n interface Foos {\n bar?: number;\n }\n const foos: Foos[] = [];\n foos.flatMap(({ bar = 42 }) => bar);\n ",
197+
},
198+
{
199+
Code: "\n function f(this: void, { bar = 42 }: { bar?: number }) {\n return bar;\n }\n ",
200+
},
192201
}, []rule_tester.InvalidTestCase{
193202
{
194203
Code: "\n function Bar({ foo = '' }: { foo: string }) {\n return foo;\n }\n ",

0 commit comments

Comments
 (0)