Исправление Princesska, (текущая версия) :
А каким образом вылет на .ok_or(…)
будет отличаться в плане фактических последствий (не считая распаковки, см. ниже) от вылета на (+)
, которому пришло явно не число? Круто, конечно, не набирать N символов на клавиатуре, количество которых пусть и варьируется, но не сильно – оно всегда будет относительно низким (... :: Int[]
, или ... as number[]
, например), но это не то что бы аргумент.
Всё ещё понятно, каким образом программа, которая фактически умеет работать только с такими значениями, какие условно можно было бы обозначить типом [unknown, unknown, unknown, number, ...unknown[]]
(поскольку используется лишь четвёртый элемент из этого значения его тип можно упростить до number[]
) в записи системы типов TypeScript, может получить какой-либо профит от использования динамической типизации.
придётся не number[], а некий jsvalue[] делать
Это в тех языках, где для работы с JSON нужно положить значение в контейнер, типа Haskell и OCaML. Работа с JSON, аналогичная соответствующему пакету в Racket, вполне себе делается в той же Scala:
import nl.typeset.sonofjson._
val person = = parse("""{ "name" : { "first": "John", "last": "Doe" } }""")
val name: String = person.name.first
где мы работаем с определённым подмножеством типов непосредственно языка, которые библиотека считает безопасными.
Исходная версия Princesska, :
А каким образом вылет на .ok_or(…)
будет отличаться в плане фактических последствий от вылета на (+)
, которому пришло явно не число? Круто, конечно, не набирать N символов на клавиатуре, количество которых пусть и варьируется, но не сильно – оно всегда будет относительно низким (... :: Int[]
, или ... as number[]
, например), но это не то что бы аргумент.
Всё ещё понятно, каким образом программа, которая фактически умеет работать только с такими значениями, какие условно можно было бы обозначить типом [unknown, unknown, unknown, number, ...unknown[]]
(поскольку используется лишь четвёртый элемент из этого значения его тип можно упростить до number[]
) в записи системы типов TypeScript, может получить какой-либо профит от использования динамической типизации.
придётся не number[], а некий jsvalue[] делать
Это в тех языках, где для работы с JSON нужно положить значение в контейнер, типа Haskell и OCaML. Работа с JSON, аналогичная соответствующему пакету в Racket, вполне себе делается в той же Scala:
import nl.typeset.sonofjson._
val person = = parse("""{ "name" : { "first": "John", "last": "Doe" } }""")
val name: String = person.name.first
где мы работаем с определённым подмножеством типов непосредственно языка, которые библиотека считает безопасными.