Skip to content

Conversation

@Shinigami92
Copy link
Collaborator

No description provided.

@Shinigami92 Shinigami92 added this to the vAnytime milestone Jun 13, 2025
@Shinigami92 Shinigami92 self-assigned this Jun 13, 2025
@Shinigami92 Shinigami92 added the c: chore PR that doesn't affect the runtime behavior label Jun 13, 2025
@github-actions
Copy link

github-actions bot commented Jun 13, 2025

Coverage Report

Status Category Percentage Covered / Total
🟢 Lines 92.71% (🎯 90%)
⬆️ +0.03%
3259 / 3515
🟢 Statements 92.71% (🎯 90%)
⬆️ +0.03%
3259 / 3515
🟢 Functions 96.7% (🎯 90%)
🟰 ±0%
264 / 273
🟢 Branches 91.09% (🎯 85%)
🟰 ±0%
859 / 943
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
src/db.ts 83.62%
⬆️ +0.44%
88.88%
🟰 ±0%
87.5%
🟰 ±0%
83.62%
⬆️ +0.44%
90-92, 122, 125-137, 180-182
src/migrationBuilder.ts 96.19%
🟰 ±0%
93.33%
🟰 ±0%
100%
🟰 ±0%
96.19%
🟰 ±0%
835-839, 980-985
src/operations/operators/addToOperatorFamily.ts 100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
src/operations/operators/removeFromOperatorFamily.ts 100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
src/operations/schemas/createSchema.ts 100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
100%
🟰 ±0%
src/operations/tables/shared.ts 83.45%
⬆️ +0.30%
81.81%
🟰 ±0%
80%
🟰 ±0%
83.45%
⬆️ +0.30%
157-158, 211-215, 241-242, 261-262, 287-288, 291-298, 301-302, 439-464
src/operations/triggers/createTrigger.ts 86.25%
🟰 ±0%
68.18%
🟰 ±0%
100%
🟰 ±0%
86.25%
🟰 ±0%
55-56, 68-69, 72-73, 76-79, 115
Unchanged Files
src/index.ts 100% 100% 100% 100%
src/logger.ts 100% 100% 100% 100%
src/migration.ts 76.07% 86.56% 68.75% 76.07% 149-152, 173-189, 231-237, 296-337, 402-403, 429-431, 439-440, 457-460, 489-490
src/migrationOptions.ts 100% 100% 100% 100%
src/pgType.ts 100% 100% 100% 100%
src/runner.ts 82.13% 67.79% 100% 82.13% 186, 206-207, 219-220, 272-273, 315-318, 327-331, 344, 356-359, 382, 393, 423-436, 439-442, 462-464, 473, 475-484
src/sqlMigration.ts 85.36% 100% 80% 85.36% 54-60
src/operations/sql.ts 100% 100% 100% 100%
src/operations/casts/createCast.ts 100% 100% 100% 100%
src/operations/casts/dropCast.ts 100% 100% 100% 100%
src/operations/casts/index.ts 100% 100% 100% 100%
src/operations/domains/alterDomain.ts 100% 100% 100% 100%
src/operations/domains/createDomain.ts 100% 100% 100% 100%
src/operations/domains/dropDomain.ts 100% 100% 100% 100%
src/operations/domains/index.ts 100% 100% 100% 100%
src/operations/domains/renameDomain.ts 100% 100% 100% 100%
src/operations/domains/shared.ts 100% 100% 100% 100%
src/operations/extensions/createExtension.ts 100% 100% 100% 100%
src/operations/extensions/dropExtension.ts 100% 100% 100% 100%
src/operations/extensions/index.ts 100% 100% 100% 100%
src/operations/extensions/shared.ts 100% 100% 100% 100%
src/operations/functions/createFunction.ts 95.52% 94.44% 100% 95.52% 71-73
src/operations/functions/dropFunction.ts 100% 100% 100% 100%
src/operations/functions/index.ts 100% 100% 100% 100%
src/operations/functions/renameFunction.ts 100% 100% 100% 100%
src/operations/functions/shared.ts 100% 100% 100% 100%
src/operations/grants/grantOnSchemas.ts 100% 100% 100% 100%
src/operations/grants/grantOnTables.ts 100% 100% 100% 100%
src/operations/grants/grantRoles.ts 100% 100% 100% 100%
src/operations/grants/index.ts 100% 100% 100% 100%
src/operations/grants/revokeOnSchemas.ts 100% 100% 100% 100%
src/operations/grants/revokeOnTables.ts 100% 100% 100% 100%
src/operations/grants/revokeRoles.ts 100% 100% 100% 100%
src/operations/grants/shared.ts 95.45% 85.71% 100% 95.45% 71
src/operations/indexes/createIndex.ts 100% 100% 100% 100%
src/operations/indexes/dropIndex.ts 100% 100% 100% 100%
src/operations/indexes/index.ts 100% 100% 100% 100%
src/operations/indexes/shared.ts 88% 86.95% 100% 88% 23, 33-36, 48
src/operations/materializedViews/alterMaterializedView.ts 100% 100% 100% 100%
src/operations/materializedViews/createMaterializedView.ts 100% 100% 100% 100%
src/operations/materializedViews/dropMaterializedView.ts 100% 100% 100% 100%
src/operations/materializedViews/index.ts 100% 100% 100% 100%
src/operations/materializedViews/refreshMaterializedView.ts 100% 100% 100% 100%
src/operations/materializedViews/renameMaterializedView.ts 100% 100% 100% 100%
src/operations/materializedViews/renameMaterializedViewColumn.ts 100% 100% 100% 100%
src/operations/materializedViews/shared.ts 100% 87.5% 100% 100%
src/operations/operators/createOperator.ts 100% 100% 100% 100%
src/operations/operators/createOperatorClass.ts 100% 83.33% 100% 100%
src/operations/operators/createOperatorFamily.ts 100% 100% 100% 100%
src/operations/operators/dropOperator.ts 100% 100% 100% 100%
src/operations/operators/dropOperatorClass.ts 100% 100% 100% 100%
src/operations/operators/dropOperatorFamily.ts 100% 100% 100% 100%
src/operations/operators/index.ts 100% 100% 100% 100%
src/operations/operators/renameOperatorClass.ts 100% 100% 100% 100%
src/operations/operators/renameOperatorFamily.ts 100% 100% 100% 100%
src/operations/operators/shared.ts 85% 75% 100% 85% 24-25, 38
src/operations/policies/alterPolicy.ts 100% 100% 100% 100%
src/operations/policies/createPolicy.ts 100% 100% 100% 100%
src/operations/policies/dropPolicy.ts 100% 100% 100% 100%
src/operations/policies/index.ts 100% 100% 100% 100%
src/operations/policies/renamePolicy.ts 100% 100% 100% 100%
src/operations/policies/shared.ts 100% 100% 100% 100%
src/operations/roles/alterRole.ts 100% 100% 100% 100%
src/operations/roles/createRole.ts 100% 75% 100% 100%
src/operations/roles/dropRole.ts 100% 100% 100% 100%
src/operations/roles/index.ts 100% 100% 100% 100%
src/operations/roles/renameRole.ts 100% 100% 100% 100%
src/operations/roles/shared.ts 98.07% 76.92% 100% 98.07% 78
src/operations/schemas/dropSchema.ts 100% 100% 100% 100%
src/operations/schemas/index.ts 100% 100% 100% 100%
src/operations/schemas/renameSchema.ts 100% 100% 100% 100%
src/operations/sequences/alterSequence.ts 93.75% 75% 100% 93.75% 23
src/operations/sequences/createSequence.ts 100% 100% 100% 100%
src/operations/sequences/dropSequence.ts 100% 100% 100% 100%
src/operations/sequences/index.ts 100% 100% 100% 100%
src/operations/sequences/renameSequence.ts 100% 100% 100% 100%
src/operations/sequences/shared.ts 78.57% 68.75% 100% 78.57% 41, 43-44, 49-50, 63-64, 69-70
src/operations/tables/addColumns.ts 100% 80% 100% 100%
src/operations/tables/addConstraint.ts 100% 100% 100% 100%
src/operations/tables/alterColumn.ts 89.33% 76.47% 100% 89.33% 69, 76-83
src/operations/tables/alterTable.ts 100% 100% 100% 100%
src/operations/tables/createTable.ts 89.39% 77.27% 100% 89.39% 51-55, 92-93
src/operations/tables/dropColumns.ts 100% 100% 100% 100%
src/operations/tables/dropConstraint.ts 100% 100% 100% 100%
src/operations/tables/dropTable.ts 100% 100% 100% 100%
src/operations/tables/index.ts 100% 100% 100% 100%
src/operations/tables/renameColumn.ts 100% 100% 100% 100%
src/operations/tables/renameConstraint.ts 100% 100% 100% 100%
src/operations/tables/renameTable.ts 100% 100% 100% 100%
src/operations/triggers/dropTrigger.ts 100% 100% 100% 100%
src/operations/triggers/index.ts 100% 100% 100% 100%
src/operations/triggers/renameTrigger.ts 100% 100% 100% 100%
src/operations/triggers/shared.ts 100% 100% 100% 100%
src/operations/types/addTypeAttribute.ts 100% 100% 100% 100%
src/operations/types/addTypeValue.ts 100% 100% 100% 100%
src/operations/types/createType.ts 100% 100% 100% 100%
src/operations/types/dropType.ts 100% 100% 100% 100%
src/operations/types/dropTypeAttribute.ts 100% 100% 100% 100%
src/operations/types/index.ts 100% 100% 100% 100%
src/operations/types/renameType.ts 100% 100% 100% 100%
src/operations/types/renameTypeAttribute.ts 100% 100% 100% 100%
src/operations/types/renameTypeValue.ts 100% 100% 100% 100%
src/operations/types/setTypeAttribute.ts 100% 100% 100% 100%
src/operations/views/alterView.ts 100% 100% 100% 100%
src/operations/views/alterViewColumn.ts 100% 100% 100% 100%
src/operations/views/createView.ts 100% 100% 100% 100%
src/operations/views/dropView.ts 100% 100% 100% 100%
src/operations/views/index.ts 100% 100% 100% 100%
src/operations/views/renameView.ts 100% 100% 100% 100%
src/operations/views/shared.ts 100% 66.66% 100% 100%
src/utils/PgLiteral.ts 90.47% 100% 80% 90.47% 44-45
src/utils/StringIdGenerator.ts 100% 100% 100% 100%
src/utils/createSchemalize.ts 100% 100% 100% 100%
src/utils/createTransformer.ts 100% 100% 100% 100%
src/utils/decamelize.ts 100% 100% 100% 100%
src/utils/escapeValue.ts 100% 100% 100% 100%
src/utils/formatLines.ts 100% 100% 100% 100%
src/utils/formatParams.ts 100% 100% 100% 100%
src/utils/formatPartitionColumns.ts 100% 100% 100% 100%
src/utils/getMigrationTableSchema.ts 100% 100% 100% 100%
src/utils/getSchemas.ts 100% 100% 100% 100%
src/utils/identity.ts 100% 100% 100% 100%
src/utils/index.ts 100% 100% 100% 100%
src/utils/intersection.ts 100% 100% 100% 100%
src/utils/makeComment.ts 100% 100% 100% 100%
src/utils/quote.ts 100% 100% 100% 100%
src/utils/toArray.ts 100% 100% 100% 100%
src/utils/types.ts 100% 100% 100% 100%
Generated in workflow #2177 for commit fa37ccd by the Vitest Coverage Report Action

@Shinigami92
Copy link
Collaborator Author

@bradzacher @JoshuaKGoldberg Hey typescript-lint maintainers.

I'm currently working again with many trainees in my company work. There I have the issue that they write a lot code like e.g.:

const someElements = getElements()
//    ^? = any[]

someElements.filter((element: Element) => element.needed)
//                          ~~~~~~~~~ <- I don't want these arrow-parameter types

This is all over the codebase in multiple projects. (I'm new in that company)
Now I would like to create an eslint rule that explains trainees that they should think about what they are typing and where.
So instead of adding a type annotation in every arrow-callback function, they should add a type annotation to the variable or return-type.

e.g.

function getElements(): Element[] { return [] }
// or
const someElements: Element[] = getElements()

someElements.filter((element) => element.needed)
//                   ~~~~~~~ <- now gets inferred as Element 🎉 

So my question to you typescript-lint maintainers is: Are you interested in such a rule proposal?
I would battle-test it in some more repos first and next week at work.
Or is there something fundamentally that speaks against using such a rule in typescript-lint?

@JoshuaKGoldberg
Copy link

Are you interested in such a rule proposal?

I'd say in general the right next step would be to file an issue asking this in typescript-eslint. Even if the idea isn't something that lands in core, that'd give it more visibility. If you end up writing your own custom plugin that'd be a good place to mention it.

Though...

// ^? = any[]

This seems like the root problem, no? That folks are having anys in places? We generally don't add a lot of rules for situations that boil down to "there's an any and now other things are unsafe".

Also: typescript-eslint/typescript-eslint#2673 is another example of why these kinds of rules can be surprisingly difficult to write.

@Shinigami92 Shinigami92 force-pushed the chore-lint-custom-no-arrow-parameter-types branch from ecec39e to 42fe865 Compare June 16, 2025 14:36
@Shinigami92 Shinigami92 force-pushed the chore-lint-custom-no-arrow-parameter-types branch from 42fe865 to e8140f3 Compare July 4, 2025 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c: chore PR that doesn't affect the runtime behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants