Виды опциональности в TypeScript

В TypeScript

title: string | undefined;

title?: string;

Это вроде очевидно, но я никогда об этом не задумывался. В первом случае нужно обязательно передать свойство title, тогда как во втором его можно полностью опустить.

Кстати, в TypeScript v4.4 добавили флаг --exactOptionalPropertyTypes, который заставляет TS проверять такие случаи.