Skip to content

Comments

add recommended options to tsconfig#74

Open
dynst wants to merge 2 commits intoZondax:mainfrom
dynst:tsconfig-recommended
Open

add recommended options to tsconfig#74
dynst wants to merge 2 commits intoZondax:mainfrom
dynst:tsconfig-recommended

Conversation

@dynst
Copy link

@dynst dynst commented Oct 27, 2025

running tsc --init shows the latest recommended options.

dynst added 2 commits October 18, 2025 19:58
running 'tsc --init' shows the latest recommended options.
@gemini-code-assist
Copy link

Summary of Changes

Hello @dynst, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request updates the tsconfig.json file to incorporate the latest recommended compiler options, as suggested by running tsc --init. The primary goal is to modernize the module resolution strategy and introduce stricter type checking and code quality rules, ensuring a more robust and maintainable codebase.

Highlights

  • Module Resolution Update: The module compiler option in tsconfig.json has been updated from commonjs to node20, aligning with modern Node.js module resolution practices. The moduleResolution option was also removed as it's implicitly handled by node20.
  • Recommended Compiler Options: Several new recommended compiler options have been added to tsconfig.json to enhance type safety and code quality. These include isolatedModules, noUncheckedSideEffectImports, noFallthroughCasesInSwitch, noImplicitReturns, noUnusedLocals, and noUnusedParameters.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

The pull request adds recommended options to the tsconfig.json file, updating the module setting and adding several new compiler options to enhance code quality and strictness. I have provided feedback focusing on the correctness and potential impact of these changes.

"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"module": "node20",

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Changing the module from commonjs to node20 could introduce compatibility issues if the project is used in environments that do not support Node.js 20 modules. Verify that all target environments support this module type. If compatibility with older environments is needed, consider using a more widely supported module type like commonjs or esnext and using a bundler to target different environments.

Could you please confirm that this change is intentional and that the target environments are compatible with node20?

Comment on lines +6 to +15
"isolatedModules": true,
"exactOptionalPropertyTypes": false,
"noUncheckedIndexedAccess": false,
"noUncheckedSideEffectImports": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": false,
"noImplicitReturns": true,
"noPropertyAccessFromIndexSignature": false,
"noUnusedLocals": true,
"noUnusedParameters": true,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

These new compiler options (isolatedModules, exactOptionalPropertyTypes, etc.) enforce stricter type checking and code quality rules. While generally beneficial, they might introduce new errors or warnings in existing code that was previously considered valid. It's crucial to ensure that the codebase is compatible with these new rules and that any resulting issues are addressed.

Consider running the TypeScript compiler with these options enabled in a test environment to identify and fix any compatibility issues before merging these changes.

"target": "es2020",
"strict": true,
"isolatedModules": true,
"exactOptionalPropertyTypes": false,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Setting exactOptionalPropertyTypes to false disables exact optional property types. This can lead to unexpected behavior if you're relying on exact matching of optional properties. Consider the implications of disabling this feature and whether it aligns with the project's goals for type safety.

If the intention is to allow inexact optional property types, please document why this is necessary and how it affects the codebase.

"isolatedModules": true,
"exactOptionalPropertyTypes": false,
"noUncheckedIndexedAccess": false,
"noUncheckedSideEffectImports": true,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Setting noUncheckedSideEffectImports to true can help prevent accidental side effects from imports. However, it might also flag legitimate cases where side effects are intended. Ensure that all flagged imports are carefully reviewed to determine whether the side effects are intentional and necessary.

If there are intentional side effects, consider using a more explicit way to indicate them, such as a comment or a dedicated function.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant