With "noImplicitAny": true in tsconfig.json:
const a = {}
console.log(a['b']) // Property b does not exist on type {}.
console.log(a.b) // Property b does not exist on type {}.
With "noImplicitAny": false in tsconfig.json:
const a = {}
console.log(a['b']) // no error
console.log(a.b) // Property b does not exist on type {}.
Why there's no error for the second console.log(a['b']) while the second console.log(a.b) throws?