microsoft / microsoft/typespec

[Bug]: There's seemingly no way to get a template declaration's type parameters defaults as `Type` instances

Open
#5,448 0 comments 1 reaction 0 assignees View on GitHub
compiler:core design:needed needs-area triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Describe the bug

Given a `TemplatedType` that passes `isTemplateDeclaration`, there doesn't seem to be a way to get the defaults of its type parameters as `Type` instances.

This blocks some of what I want to implement in https://github.com/TomerAberbach/typespec-fast-check/pull/76. I want to emit functions with default values for each templated type. e.g.

```tsp
model TemplateModel {
a: A,
b: B
}
```

Should become the following from my emitter:
```js
import * as fc from "fast-check";

export const TemplateModel = (a, b = fc.string()) =>
fc.record({
a: a,
b: b,
});
```

But I can't figure out any way to get the `Type` for the `= string` default from the TypeSpec file.

### Reproduction

See above.

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Check that there isn't already an issue that request the same bug to avoid creating a duplicate.
- [x] Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/Microsoft/typespec/discussions).
- [x] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.