Виды опциональности в TypeScript
В TypeScript
title: string | undefined;
≠
title?: string;
Это вроде очевидно, но я никогда об этом не задумывался. В первом случае нужно обязательно передать свойство title, тогда как во втором его можно полностью опустить.
Кстати, в TypeScript v4.4 добавили флаг --exactOptionalPropertyTypes, который заставляет TS проверять такие случаи.