Внутри функции получаю вот такой вот массив
$productsInfo['cart'][$orderId]['face'] = int;
$productsInfo['cart'][$orderId]['name'] = string;
$productsInfo['cart'][$orderId]['id'] = int;
$productsInfo['cart'][$orderId]['quantity'] = int;
$productsInfo['cart'][$orderId]['discount_type'] = int|null;
$productsInfo['cart'][$orderId]['discount'] = int|null;
$productsInfo['email'] = string;
Пробовал написать аннотацию возвращаемого значения, но псалм не хочет пропускать никакой вариант кроме этого
/**
* @return array{email: string, cart: array<array-key, array{discount?: int<min, max>|null,
* discount_type: 1|2|null, face: int, id: int, name: string, quantity: 1}>}
*/
Почему для
discount
пслам требует установить знак
?
а так же тип
int<min, max>|null
а не просто
discount: int|null
?