Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork2.8k
Open
Description
Before You File a Proposal Please Confirm You Have Done The Following...
- I havesearched for related issues and found none that match my proposal.
- I have searched thecurrent rule list and found no rules that match my proposal.
- I haveread the FAQ and my problem is not listed.
My proposal is suitable for this project
- My proposal specifically checks TypeScript syntax, or it proposes a check that requires type information to be accurate.
- My proposal is not a "formatting rule"; meaning it does not just enforce how code is formatted (whitespace, brace placement, etc).
- I believe my proposal would be useful to the broader TypeScript community (meaning it is not a niche proposal).
Description
If a file exports a construct that relies on some other types, but doesn't export those other types, it can be difficult for other files to declare types based on the construct.
For example, suppose a./somewhere
file exports adoSomething
function with a single parameter of typeSomeSettings
, but doesn't exportSomeSettings
. What if a consuming file wants to declare a local/parameter of that sameSomeSettings
type? There'd be no easy way to refer toSomeSettings
.
import{doSomething}from"./somewhere";exportfunctioncallDoSomethingAndLog(settings:Parameters<typeofdoSomething>[0]){doSomething(settings);console.log("Done!");}
I see this a lot in definitions for libraries. Example:saurabhnemade/react-twitter-embed#132
Fail Cases
interfaceSomeSettings{something:string;}exportfunctionsomething(settings:SomeSettings){// ...}
Pass Cases
exportinterfaceSomeSettings{something:string;}exportfunctionsomething(settings:SomeSettings){// ...}
Additional Info
...I could have sworn this was already filed somewhere, but I couldn't find it after a few minutes of searching. 🤷