So, I got this little minimal api endpoint:
app.MapGet("/person/{name}", (string name) =>
    {
        var person = people.FirstOrDefault(p => p.Name.StartsWith(name));
        if (person == null)
            return (IResult)TypedResults.NotFound("Not found.");
        return TypedResults.Ok(person);
    }
);
I had to do (IResult) because of CS1678 'Parameter '1' is declared as type 'string' but should be 'Microsoft.AspNetCore.Http.HttpContext'' - i can't understand why is that the case with 'name' parameter.
The documentation mentions that
TypedResults.OkandTypedResults.NotFoundare declared as returning different types and the compiler won't attempt to infer the best matching type.
To use
TypedResults, the return type must be fully declared, which when asynchronous requires theTask<>wrapper. UsingTypedResultsis more verbose, but that's the trade-off for having the type information be statically available and thus capable of self-describing to OpenAPI.
In short, you need a Results<> wrapper.
A possible way to adjust your code might look like below
app.MapGet("/person/{name}",
    Results<NotFound<string>, Ok<Person>> (string name) =>
    {
        //var person = people.FirstOrDefault(p => p.Name.StartsWith(name));
        Person? person = null;
        return person is null
            ? TypedResults.NotFound("Not found.")
            : TypedResults.Ok(person);
    });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With