TypeStat icon indicating copy to clipboard operation
TypeStat copied to clipboard

🐛 Bug: strictNonNullAssertions adds !!!!!!!!!!!!!!!!!!!!!

Open rubiesonthesky opened this issue 10 months ago • 1 comments

Bug Report Checklist

  • [X] I have tried restarting my IDE and the issue persists.
  • [X] I have pulled the latest main branch of the repository.
  • [X] I have searched for related issues and found none that matched my issue.

Expected

There should not be reason to add ! here. attributeTypesAndRequirements should be always Map

const visitReactComponentNode = (
	node: ReactComponentNode,
	request: FileMutationsRequest,
) => {
  // ...
	// Find all types of props later passed to the node
	const attributeTypesAndRequirements = collectComponentAttributeTypes(
		request,
		node,
	);
        // ! ts language server says `attributeTypes` is `attributeTypes: Map<string, ts.Type[]>`, so it should not be undefined
	if (!attributeTypesAndRequirements?.attributeTypes.size) {
		return undefined;
	}
  // ...
};

Actual

const visitReactComponentNode = (
	node: ReactComponentNode,
	request: FileMutationsRequest,
) => {
  // ...
	// Find all types of props later passed to the node
	const attributeTypesAndRequirements = collectComponentAttributeTypes(
		request,
		node,
	);
        // ! ts language server says `attributeTypes` is `attributeTypes: Map<string, ts.Type[]>`, so it should not be undefined
	if (!attributeTypesAndRequirements?.attributeTypes!!!!!!!!!!!!!!!!!!!!!.size) {
		return undefined;
	}
  // ...
};

Additional Info

typestat.json

[
    {
        "fixes": {
            "strictNonNullAssertions": true
        },
        "include": [
            "src/**/*.{ts,tsx}"
        ],
        "projectPath": "./tsconfig.json",
        "types": {
            "strictNullChecks": true
        }
    }
]

tsconfig

{
	"compilerOptions": {
		"declaration": true,
		"declarationMap": true,
		"esModuleInterop": true,
		"module": "NodeNext",
		"moduleResolution": "NodeNext",
		"noEmit": true,
		"outDir": "lib",
		"resolveJsonModule": true,
		"skipLibCheck": true,
		"sourceMap": true,
		"strict": true,
		"target": "ES2022"
	},
	"include": ["src", "test/*.ts"]
}

rubiesonthesky avatar Apr 03 '24 18:04 rubiesonthesky