Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ID-Prep] Preserve type nodes from type assertions in declarations #57587

Closed
6 tasks done
dragomirtitian opened this issue Mar 1, 2024 · 0 comments Β· Fixed by #57772
Closed
6 tasks done

[ID-Prep] Preserve type nodes from type assertions in declarations #57587

dragomirtitian opened this issue Mar 1, 2024 · 0 comments Β· Fixed by #57772
Labels
Experience Enhancement Noncontroversial enhancements Suggestion An idea for TypeScript
Milestone

Comments

@dragomirtitian
Copy link
Contributor

dragomirtitian commented Mar 1, 2024

The [ID-prep] set of issues aligns Declaration Emit with the forthcoming Isolated Declarations feature.

πŸ” Search Terms

declaration emit preserve types assertions

βœ… Viability Checklist

⭐ Suggestion

Preserve types from type assertions when emitting declarations.

πŸ“ƒ Motivating Example

// index.ts
type P = {} & { foo: boolean };
export let p = null as P

// index-current.d.ts
export declare let p: {
    foo: boolean;
};

// index-proposed.d.ts
type P = {} & { foo: boolean };
export declare let p: P;

πŸ’» Use Cases

  1. What do you want to use this for?
    This would improvement would can bring us closer to external declaration emitters being a reality.
  2. What shortcomings exist with current approaches?
    An external tool can extract the type from the assertion, but then they would have different declarations. It would be great if, where possible, typescript would also preserve types as written.
  3. What workarounds are you using in the meantime?
    We could force users to always specify the type even when it's obvious from the assertion, but this makes for very frustrating DX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Experience Enhancement Noncontroversial enhancements Suggestion An idea for TypeScript
Projects
None yet
2 participants