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
TypeScript now supportsDisposables: objects that have some "dispose" behavior when they go out of scope.
It's important to useusing
and notconst
/let
when using those objects, otherwise the automatic cleanup does not happen and you would leak resources.
Fail Cases
In this case we are opening a file through an API that expects to be disposed, but we are not using it as such. ThereadConfig
function will thus leak resources associated to the opened file.
declarefunctionopenFile(url:string):Disposable&MyFileAPI;functionreadConfig(){constconfigFile=openFile("./configFile");returnconfigFile.contentsAsJson();}
Pass Cases
In this case we are properly disposing the file resource.
declarefunctionopenFile(url:string):Disposable&MyFileAPI;functionreadConfig(){ usingconfigFile=openFile("./configFile");returnconfigFile.contentsAsJson();}
Additional Info
This is the equivalent torequire-await
, but for Disposables rather than Thenables.