# TSR1503: '…' from '@ts-r.dev/guard' must be called with a type argument; it can't be used as a value.

> A @ts-r.dev/guard function is used as a value instead of being called with a type argument. Call it directly, or use an instantiation like parse<User>.

## What it means

Calls to `@ts-r.dev/guard` functions are recognised syntactically and expanded into validators. Using one as a plain value (assigning it, passing it without a type argument) can't be expanded. Instantiation expressions such as `items.map(parse<User>)` are supported.

## Example

```ts
// parse used as a value can't be expanded.
import { parse } from "@ts-r.dev/guard";

const p = parse; // @expect TSR1503
export const v: unknown = p(1);
```

## How to fix

- Call it with a type argument: `parse<User>(value)`.
- To pass it as a function, use an instantiation expression: `items.map(parse<User>)`, or `guard<User>()`.

Sound mode is defined in [design record 0007](https://github.com/Webb-Ventures/typescript-rust/blob/main/docs/design/0007-sound-mode.md) (accepted 2026-10-15).

Source: https://ts-r.dev/errors/TSR1503/
