Re: [community-group] $type should be a required property (#139)

@KyleWpppd Perhaps the spec's wording doesn't make this clear, but what you've described _is_ how things should work.

As per [my earlier comment](https://github.com/design-tokens/community-group/issues/139#issuecomment-1166640576), a `$type` property on a token has the highest precedence when resolving that token's type.

Therefore, if that token happens to reference another token which has a different type, then that is an error since the value will be incompatible.

By having `$type` optional, we afford authors to express their intent in a more nuanced way. For example:

```jsonc
{
  "token-a": {
     "$type": "dimension",
    "$value": "1rem"
  },

  // token-b's resolved type is "dimension"
  // If the author's intent is: token-b is just another name for token-a, regardless of what
  // token-a's type is, then they can express that by not setting $type and thus having the
  // the resolved type be determined by the other token they are referencing.
  "token-b": {
    "$value": "{token-a}"
  },    

  // This token's resolved type is color. However, it is invalid
  // as its value references a non-color token. Tools are therefore
  // required to reject this token and should show an appropriate
  // warning or error message to the user.
  // If the author's intent is: token-c must be a color, so I want tools to warn
  // me if I accidentally reference a non-color token, then this is the way to
  // achieve that.
  "token-c": {
    "$type": "color",
    "$value": "{token-a}"
  }   
}
```


-- 
GitHub Notification of comment by c1rrus
Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/139#issuecomment-1183446510 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 13 July 2022 16:41:46 UTC