> For the complete documentation index, see [llms.txt](https://scope.onepub.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://scope.onepub.dev/fundamentals/type-safety.md).

# Type safety

Using strict type safety when using Scope is highly recommended as it will move many runtime errors into compile time errors.

When injecting a value be sure to declare its type.

```dart
import 'package:scope/scope.dart';

const ageKey = ScopeKey<int>();
const countKey = ScopeKey<int>();

/// Missing type when value is called.
/// When you try to `use` this key as an int
/// you will be in for a nasty surprise.
Scope()
  ..value(ageKey, 'my name');
  
/// type is correctly passed
Scope()
  ..value<int>(countKey, 10);
```

To ensure type safety when providing values we recommend that you use the lints package and add the following to your analysis\_options.yaml file:

```yaml
analyzer:
  language:
    strict-raw-types: true
    strict-inference: true
    # only available from dart 2.16
    strict-casts: true
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false
```
