class AClass{
aProp?:number=undefined;
HasAProp():boolean{return this.aProp!==undefined;}
}
let anInst=new AClass;
if (anInst.aProp) // standard check
Math.sqrt(anInst.aProp);
if (anInst.HasAProp()) // custom check
Math.sin(anInst.aProp); // ts error: Argument of type 'number | undefined' is not assignable to parameter of type 'number'.
В строгом режиме машинописный текст предупреждает об использовании, возможно, неопределенных свойств. И, что удивительно, он способен обнаруживать логику, предотвращающую это (как это происходит в строке с комментариями «стандартная проверка».
Но если логика более скрытая, как в «выборочной проверке», то нет. Я не ожидаю, что это будет очень умно, но как можно заявить, что свойство проверено? (пример тривиален, но в более сложных случаях может понадобиться)