У меня есть два объединенных типа, у одного есть свойство, а у другого нет. Я предположил, что проверка существования этого свойства позволит мне сузить его, но это не работает.
Я создал репродукция этой игровой площадки. Этот другой очень похожая вещь работает нормально. Я неправильно использую профсоюзы?
Вот код для полноты:
export interface AuthenticatedProfile {
readonly userId: string;
readonly name: string;
}
export interface AnonymousProfile {
readonly userId: undefined;
readonly otherProp: string;
}
export type Profile = AnonymousProfile | AuthenticatedProfile;
function handleProfile(prof: Profile) {
if (prof.userId) {
console.log(prof.name);
}
}
Спасибо!