'Property does not exist on type 'never'
I had the same error and replaced the dot notation with bracket notation to suppress it.
e.g.:
obj.name -> obj['name']
Because you are assigning instance
to null
. The compiler infers that it can never be anything other than null
. So it assumes that the else block should never be executed so instance
is typed as never
in the else block.
Now if you don't declare it as the literal value null
, and get it by any other means (ex: let instance: Foo | null = getFoo();
), you will see that instance
will be null
inside the if block and Foo
inside the else block.
Never type documentation: https://www.typescriptlang.org/docs/handbook/basic-types.html#never
Edit:
The issue in the updated example is actually an open issue with the compiler. See:
https://github.com/Microsoft/TypeScript/issues/11498 https://github.com/Microsoft/TypeScript/issues/12176
if you write Component as React.FC, and using useState(),
just write like this would be helpful:
const [arr, setArr] = useState<any[]>([])