public function __construct(array $config)
{
Config::validate($config, ['name' => Config::STRING, 'fields' => Config::arrayOf(FieldDefinition::getDefinition(), Config::KEY_AS_NAME), 'resolveType' => Config::CALLBACK, 'description' => Config::STRING]);
$this->name = $config['name'];
$this->description = isset($config['description']) ? $config['description'] : null;
$this->_fields = !empty($config['fields']) ? FieldDefinition::createMap($config['fields']) : [];
$this->_resolveTypeFn = isset($config['resolveType']) ? $config['resolveType'] : null;
}