То, что вы видите, - это не аннотация типа, а свойство в шаблоне объекта.Давайте упростим ваш пример, чтобы понять, что происходит.
Вот функция, которую легко понять:
f = (h) => [h.x, h.y]
Функция f
принимает объект h
и возвращаетмассив с h.x
и h.y
.Теперь в современном JavaScript не нужно передавать объект и разбивать его на части в теле функции.Вместо этого мы делаем секцию параметров функции pattern , чтобы нам вообще не нужно было беспокоиться об этой переменной h
.Таким образом, мы могли бы переписать его следующим образом (способом, аналогичным вашему примеру):
f = ({x: xValue, y: yValue}) => [xValue, yValue]
Итак, точно так же, как и раньше, вы можете перейти к f любому объекту, имеющему свойства x и y, и он вернетмассив значений в этих свойствах.
Вот оно в действии:
> f = (h) => [h.x, h.y]
[Function: f]
> f({x:1, y:2, z:3})
[ 1, 2 ]
> f = ({x: xValue, y: yValue}) => [xValue, yValue]
[Function: f]
> f({x:1, y:2, z:3})
[ 1, 2 ]
Как правило, обычно можно пропустить части xValue
и yValue
и иметь:
f = ({x: x, y: y}) => [x, y]
, что из-за условного обозначения свойства просто:
f = ({x, y}) => [x, y]
, но, как пишет @BhojendraRauniyar в другом ответе, в рамках этого кода используются соглашения об использовании заглавных букв.