Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Generate literal types for initialized constants #784

Open

Description

@jermowery

Have clutz generate out strict types for @const annotated fields.

For example:

/** @public {string} @const */
Foo.BAR = "baz";`

Should become:

static readonly BAR: 'baz'

in the generated declarations instead of the current behavior of:

static readonly BAR: string

This can help with type inferencing and the creation of string union types

Activity

  1. changed the title [-]Strictly type @const[/-] [+]Generate literal types for initialized constants[/+] on Oct 2, 2018
  2. mprobst commented on Oct 2, 2018

    @mprobst
    Contributor

    I think the term is literal types.

    I'm not sure this is a good idea though. Closure Compiler has no concept of literal types, there is no type 'baz' for Closure Compiler. If we'd try to be clever and invent them, we're prone to break other guarantees in the system, e.g. subtyping when such fields are involved. Generally speaking I think we should only produce .d.ts that map Closure's type system into TS, without trying to add precision/fanciness that doesn't exist in Closure.

    /CC @rkirov might have an opinion.

  3. Goodwine commented on Oct 2, 2018

    @Goodwine
    Contributor

    I looked briefly at changing this behavior, it requires using Node rather than JsType, but the function that emits the type is used in several places which will need to be updated, as well as their callers, there are many cascading things 😕

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions