code: public function typecastAttributes($attributeNames = null)
      {
          $attributeTypes = [];
  
          if ($attributeNames === null) {
              $attributeTypes = $this->attributeTypes;
          } else {
              foreach ($attributeNames as $attribute) {
                  if (!isset($this->attributeTypes[$attribute])) {
                      throw new InvalidArgumentException("There is no type mapping for '{$attribute}'.");
                  }
                  $attributeTypes[$attribute] = $this->attributeTypes[$attribute];
              }
          }
  
          foreach ($attributeTypes as $attribute => $type) {
              $value = $this->owner->{$attribute};
              if ($this->skipOnNull && $value === null) {
                  continue;
              }
              $this->owner->{$attribute} = $this->typecastValue($value, $type);
          }
      }
docs: Typecast owner attributes according to [[attributeTypes]].
  @param array $attributeNames list of attribute names that should be type-casted.
  If this parameter is empty, it means any attribute listed in the [[attributeTypes]]
  should be type-casted.