169 похожих чатов

Привет! Помогите, пожалуйста. Имею енам enum Type = {

Client = 'client',
Admin = 'admin',
};

И следующие типы:
type AdminUser = {
type: Type.Admin,
};

type ClientUser = {
type: Type.Client,
};

type User = ClientUser | AdminUser;

ТС ругается на следующий код:

const someFunction = (type: Type | null) => {
const user: User = {
type: type || Type.Client,
}
};

Ошибка: Type 'Type.Client' is not assignable to type 'Type.Admin'..

Что я делаю не так?

5 ответов

21 просмотр

В функцию может прийти любой тип из тех двух, и если придет админ, то user будет невалидным и тип у него не совпадет с указанным.

в плейграунде не ругается, если убрать знак “=“ в энаме… Указанной ошибкии вроде нет 🤔 https://www.typescriptlang.org/play?#code/FAUwdgrgtgBAKgTwA4hgb2DGBhANgS3ABcYBeGAcgGMDiKAaTGAQQBMp8wzKBDdzhsAC+AbmDiiyVGw5gAqgGcQAJ24YsklAC54UgHQzOjURKk5aYIopVqmmkDsQo9eQpeNjg9mNdXlXxL4wAD4s-PJKyp7AVAD2YAokCrFQIABiEGBURPjx3AAU9o5moZC4uACUZAB86ExxCSQQkTpB5OpYMEVdJaFOIC4WRIxYQsJiQA

Kamo-Spertsyan Автор вопроса

Это я просто руками писал пример.. странно, что не ругается, тогда буду копать глубже..

В 3.5 версии юнионы стали умнее: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-5.html#smarter-union-type-checking

поэтому в 3.5 и выше ошибка в Вашем кейсе не будет воспроизводиться)

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта