LINUX.ORG.RU

История изменений

Исправление 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

где мы работаем с определённым подмножеством типов непосредственно языка, которые библиотека считает безопасными.