Mi linter parece haber dejado de marcar propiedades posiblemente indefinidas pasadas a mis componentes React. Por ejemplo:
interface BooleanTypeObject { prop1: true } interface MyComponentProps { disabledObject?: BooleanTypeObject | undefined; } export function MyComponent({ disabledObject }: MyComponentProps): ReactElement { ... } Si trato de acceder a prop1 dentro de mi componente, no obtengo errores de linter. Pero lo hago cuando se compila el código si disabledObject no está undefined . Estoy seguro de que solía funcionar bien cuando usaba el ? operador, o especificado con | undefined
Habría esperado ver (parameter) disabledObject: BooleanTeeTypeObj | undefined aquí en su lugar.
Toda mi otra pelusa parece estar funcionando para mecanografiado todavía. ¿Alguien puede pensar lo que está pasando?
tsconfig.json
{ "compilerOptions": { "target": "ES2018", "module": "commonjs", "checkJs": false, "jsx": "react", "sourceMap": true, "strict": false, "noImplicitAny": false, "noUnusedLocals": false, "noUnusedParameters": false, "allowSyntheticDefaultImports": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }Esto se debe a que tiene strictNullChecks: false . Cuando se establece en falso, mecanografiado ignora por completo null e undefined y BooleanTypeObject | undefined es equivalente a BooleanTypeObject . Si desea que TypeScript muestre un error, debe configurarlo en strictNullChecks: true https://www.typescriptlang.org/tsconfig#strictNullChecks