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

Ещё меня интересует, почему TS не даже никак не намекает

на то, что я пытаюсь сравнить число с, возможно, строкой. Разве это не его основная функция – спасити меня от подобных ошибок типизации?

8 ответов

0 просмотров

Strict стоит?

strict тут не при чем, просто все операции в твоем примере могут производится и со строкой, что бы такого избежать лучше явно указывать типы в "критических" для этого местах (в твоём случае - для count)

Михаил
strict тут не при чем, просто все операции в твоем...

При чем в примере где было бы явно видно что присутствие строки гарантировано - ты бы получил ошибку. Добро пожаловать в удивительный мир Typescript :)

Михаил
При чем в примере где было бы явно видно что прису...

А нет, это часть спецификации, вот цитата 4.19.3 The <, >, <=, >=, ==, !=, ===, and !== operators These operators require one or both of the operand types to be assignable to the other. The result is always of the Boolean primitive type. то есть эти операторы работают если хотя один тип операнда может быть присвоен второму, а в твоем примере операнд типа number может быть присвоен операнду string|number

lem0nify- Автор вопроса
Михаил
strict тут не при чем, просто все операции в твоем...

Явно указал и добавил ещё один пример с аргументом функции. Ничего не изменилось.

lem0nify
Явно указал и добавил ещё один пример с аргументом...

Имелось ввиду проставить явный number для count, так как именно он сравнивается с i:number что по мнению спецификации тайпскрипта - нормально.

lem0nify- Автор вопроса
Михаил
При чем в примере где было бы явно видно что прису...

Всё дело в том, что я реальную багу вчера допустил из-за этого. Пример, который Вы видите – это модифицированная версия, т.к. я не могу показывать свой код. Я забыл, что у меня поле может быть числом, а может быть строкой, и в одном месте программы не проверил это и описал только алгоритм для числа, в итоге долго дебажил. Неприятно.

lem0nify
Всё дело в том, что я реальную багу вчера допустил...

Это нормально, тайпскрипт это не 100% type safety.

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Есть вопрос: допустим есть железка с каким-то интерфейсом(допустим usb), но как по этому интерфейсу железкой управлять неизвестно, прог нету, а управлять очень хочется надо. К...
Mixail Frolov
15
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Карта сайта