Comments (3)
createConsoleLogger
declares logger
with a using
declaration.
The purpose of using
is to automatically call [Symbol.dispose]()
when the variable goes out of scope, in this case at the end of the function, before it returns control to the caller. That means createConsoleLogger
will always return a ConsoleLogger
object that has an already-disposed Logger
object.
The using
in createConsoleLogger
should be changed to var
/let
/const
. I'd also recommend ConsoleLogger
itself also implement the Disposable
interface. Objects that own disposable objects should generally themselves be disposable so they can clean up any disposables they own.
If you make the ConsoleLogger
class disposable then a using
statement would be useful is in your main
function:
using logger = createConsoleLogger();
That way your ConsoleLogger
object will be disposed of at the end of main
, and in turn your ConsoleLogger
will dispose of the Logger
that it owns.
from typescript.
These are the intended semantics of using
. See https://github.com/tc39/proposal-explicit-resource-management
from typescript.
Thank you all.
from typescript.
Related Issues (20)
- Getters in mixins get serialized to property accessors HOT 1
- TS incorrectly flags a side effect-only import as TS5097 (An import path can only end with a '.ts' extension...) in `--watch` mode HOT 8
- Add typings for Iterator instance methods: take, find, map, etc. HOT 2
- instanceof has been used and there is a type inference error HOT 3
- False positive ts(2373)
- Type narrowing not work HOT 10
- `Uint8Array.prototype.constructor` is missing/incorrect type, and probably much more HOT 8
- Template Literal Type JSX children prop issue HOT 2
- [isolatedDeclarations] Add a syntactic form of computed property name which is always emitted as a computed property name HOT 4
- "Move to file" on global code unnecessarily imports/exports, generates invalid code HOT 3
- Wrong type on when using logical operators in nested conditions HOT 3
- Narrowing for constant indexed access fails on array getter HOT 1
- Design Meeting Notes, 6/7/2024 HOT 6
- Typescript 5.5 performance regression on arktype HOT 2
- Assertion violation in "move to new file"
- [nightly] Syntactically invalid declaration files emitted under extremely specific conditions HOT 1
- Make TypeScript Compilable to Native Machine Code! HOT 4
- [NewErrors] 5.6.0-dev.20240609 vs 5.4.5 HOT 58
- [ServerErrors][JavaScript] 5.6.0-dev.20240609 HOT 14
- [ServerErrors][TypeScript] 5.6.0-dev.20240609 HOT 24
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typescript.