. */ namespace Irstea\NgModelGeneratorBundle\Models\Types; /** * Class ArrayType. */ class ArrayType extends AbstractCollection { /** * {@inheritdoc} */ protected function getKeyType(): Type { return BuiltinType::get('number'); } /** * {@inheritdoc} */ protected function getGenericUsage(): string { return 'Array'; } /** * {@inheritdoc} */ public function castToStringOrStringArray(string $expr): string { $cast = $this->valueType->castToStringOrStringArray('x'); if ($cast !== 'x') { return sprintf('%s.map(x => %s)', $expr, $cast); } return $expr; } /** * {@inheritdoc} */ public function checkType(string $expr, bool $explicit = false): string { return sprintf( '(Array.isArray(%s) && %s.findIndex(x => !%s) === -1)', $expr, $expr, $this->valueType->checkType('x', $explicit) ); } }