Почему я не могу напрямую присвоить null числовому атрибуту, но могу, если это результат оператора if?

Почему у TypeScript нет проблем со мной в этом:

return {
 Price: value.rawPrice === null ? null : value.rawPrice
}

но у меня проблемы с этим:

return {
 Price: null
}

Где поле Price - это номер типа

Я не могу воспроизвести это поведение. Протестировано в TS детская площадка в функции с типом возврата { Price: number }. Ваш второй случай не вызывает для меня ошибки. Какую конкретную ошибку вы получаете и какую версию TS вы используете?

pushkin 19.03.2018 20:29

О, я полагаю, вы запускаете компилятор с флагом --strictNullChecks?

pushkin 19.03.2018 20:31

То же, что и @pushkin; кроме того, если я включу "strictNullChecks", оба этих примера покажут ошибку компиляции (ужасное форматирование из-за длины URL): typescriptlang.org/play/…

Heretic Monkey 19.03.2018 20:31

ок, да это кровавый флаг, спасибо @pushkin

LucasSeveryn 19.03.2018 20:35

Как сказал @MikeMcCaughan, я получаю сообщение об ошибке в обоих случаях при использовании этого флага. Мне любопытно, почему ты этого не делаешь. Может это старый баг tsc? У вас последняя версия?

pushkin 19.03.2018 20:37

как мне это проверить?

LucasSeveryn 19.03.2018 21:09
tsc --version
Alex Guerra 19.03.2018 21:32

Я нахожусь в окнах, поэтому ничего не делает

LucasSeveryn 19.03.2018 21:46

@LucasSeveryn Вы имеете в виду, что этого нет в вашем% PATH%? Найдите место, где установлен tsc, и запустите команду из этого каталога.

pushkin 19.03.2018 22:28

возможно, потому, что он не может явно привести его. Price:null as number может работать.

Erik Philips 20.03.2018 18:36
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
0
10
344
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте неопределенный вместо ноль

вот рабочий пример

Ответ принят как подходящий

Это было из-за --strictNullChecks в компиляторе.

Другие вопросы по теме