# GridTypeRegistry

> _Since v0.3.0_

Injectable service for managing type-level defaults.

Use `provideGridTypeDefaults()` in your app config to set up defaults,
or inject this service for dynamic registration.

#### Example

```typescript
// App-level setup (app.config.ts)
export const appConfig: ApplicationConfig = {
  providers: [
    provideGridTypeDefaults({
      country: {
        renderer: CountryCellComponent,
        editor: CountryEditorComponent
      },
      status: {
        renderer: StatusBadgeComponent
      }
    })
  ]
};

// Dynamic registration
@Component({ ... })
export class AppComponent {
  private registry = inject(GridTypeRegistry);

  ngOnInit() {
    this.registry.register('currency', {
      renderer: CurrencyCellComponent
    });
  }
}
```

## Methods

### register()

Register type-level defaults for a custom type.

```ts
register(type: string, defaults: TypeDefaultRegistration<T>): void
```

#### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| `type` | <code>string</code> | The type name (e.g., 'country', 'currency') |
| `defaults` | <code><a href="/grid/angular/api/types/typedefaultregistration/">TypeDefaultRegistration</a>&lt;T&gt;</code> | Renderer/editor configuration |

***

### get()

Get type defaults for a given type.

```ts
get(type: string): TypeDefaultRegistration<unknown> | undefined
```

#### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| `type` | <code>string</code> |  |

***

### unregister()

Remove type defaults for a type.

```ts
unregister(type: string): void
```

#### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| `type` | <code>string</code> |  |

***

### has()

Check if a type has registered defaults.

```ts
has(type: string): boolean
```

#### Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| `type` | <code>string</code> |  |

***

### getRegisteredTypes()

Get all registered type names.

```ts
getRegisteredTypes(): string[]
```

***
