Comments (4)
Once a symbol is used in the public api (in this case QrCode
), then the entire symbol and therefore all its dependencies become part of the public api for type checking and documentation. It would be quiet complex (especially for documentation) and slower to make a more targeted approach like this.
In this scenario, I'd recommend extracting out the ERROR_CORRECTION_LEVEL
to a separate declaration that can be shared by the private QrCode
class and the public API (which the extracted declaration is now part of)
from deno.
But shouldn't the linter check whether the symbol is actually exported ?
Because I'd understand if the keyof typeof
itself would be considered a slow type, but in this case it seems to be able to correctly infer the typing so it doesn't make sense that it makes extra effort to check the remaining of an unexported symbol...
I've rewritten my code anyways, but still feels like a bug. It should either work or just forbids the usage of unexported members in "implicitely public" api because it seems kind of unpredictable whether the slow type is going to be triggered or not
from deno.
But shouldn't the linter check whether the symbol is actually exported ?
No, it's extremely common for people to write typescript code using symbols that aren't exported, but are part of the public api.
It doesn't identify exported symbols, but symbols that are part of the public API.
because it seems kind of unpredictable whether the slow type is going to be triggered or not
Essentially it examines the exported types and then their dependencies and their dependencies, etc. So any symbol that is used even transitively by an exported type is part of the public API.
from deno.
Ok thank a lot for the explanations, make sense
from deno.
Related Issues (20)
- node compat: lstatSync missing throwIfNoEntry
- support type checking html files
- Socket path argument ignored in node:http.Server.listen
- add --hide-traces flag to deno test to ignore the stack trace completely
- Array.prototype.some doesn't work in deno HOT 19
- coverage raw data with empty url is created when the test case include `Deno.statSync` call HOT 1
- Prisma `library` using N-API hangs often HOT 1
- Bug: `deno install` produces warnings for packages it installed itself
- Bug: `deno install` doesn't print package deprecation warnings HOT 1
- bug: `Uncached or missing jsr package` error in LSP for `deno_std` HOT 2
- Perf: `mocha` runs slow in Deno compared to Node
- Bug: `deno task` errors when script contains `npm run -s` HOT 1
- fails to import a module because of invalid utf8 sequence from npm packages HOT 5
- Missing indentation for named JSDoc examples
- `deno repl` takes upwards of 8 seconds to start due to randomly going through files. HOT 3
- Bare specifier resolution error message should include a hint to `deno add` the specifier
- Create flag `--workspace` to the command `deno add`
- Add test for lsp changes with `no-unused-vars`
- .npmrc: doesn't work with the LSP
- feat: `deno fmt` should inline code when `lineWidth` allows it. HOT 1
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 deno.