// @ts-check
const obj = {
str: `a string`,
};
console.log(obj.nonexistant); // no error (it should be erroring)
let num = 0; // type number
num = obj.str; // has error (good)
Why is the first issue not showing the red underline error/problem in VS Code?

The typing is fine. I'm pretty sure this is a configuration thing. Try adding a jsconfig.json with
"strict": true,or"noImplicitAny": true,in itscompilerOptionsfield, or a tsconfig.json with the same, along with"allowJs": true,and"checkJs": true,.