microsoft / microsoft/typespec

Support for #if compile directive

Open
#7,371 3 comments 0 reactions 0 assignees View on GitHub
compiler:core design:needed triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Description

Typespec has support for compile time parameters. These parameters can be used to configure options for emitters, but these parameters can't be used in the typespec code.

There are situations where compile time directives would be useful to a typespec file. You might want to build multiple different variants of a service. Directives that can use values from the parameters could prove useful in these situations.

```yaml
# tspconfig.yaml
parameters:
local:
default: "false"
```

```typespec
// main.tsp
#if parameters.local == "true"
namespace Private.Contoso
#else
namespace Microsoft.Contoso
#endif
```

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Read the [docs](https://typespec.io/docs/).
- [x] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

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.