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 function expressions in initialisers #57677

Open
6 tasks done
dragomirtitian opened this issue Mar 7, 2024 · 0 comments
Open
6 tasks done
Labels
Committed The team has roadmapped this issue Suggestion An idea for TypeScript
Milestone

Comments

@dragomirtitian
Copy link
Contributor

πŸ” Search Terms

declaration emit preserve types from functions

βœ… Viability Checklist

⭐ Suggestion

Preserve types from function expressions in initializers when emitting declarations.

πŸ“ƒ Motivating Example

// index.ts
type P = {} & { foo: boolean };
export let fn = (p: P, p2:typeof p) => {}

// index-current.d.ts
type P = {} & { foo: boolean };
export declare let fn: (p: P, p2: {
    foo: boolean;
}) => void;
export {};

// index-proposed.d.ts
type P = {} & { foo: boolean };
export declare let fn: (p: P, p2: typeof p2) => void;
export {};

πŸ’» 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 function expression, 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 function expression, 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
Committed The team has roadmapped this issue Suggestion An idea for TypeScript
Projects
None yet
2 participants