Comments (7)
See #39504 (comment)
Thatâs because
class
,let
andconst
donât create own properties on the global object, instead they create variable bindings on a Declarative Environment Record, so this is the expected behaviour.
If you still want to do this, try this workaround.
declare global {
namespace globalThis {
class WorldClass {
constructor();
important: number;
}
export { WorldClass }
}
}
const w = new global.WorldClass(); // OK
from typescript.
Your "Playground" link does not work and leads to a 404.
from typescript.
Your "Playground" link does not work and leads to a 404.
It's a github link as I need more than one file: https://github.com/jayshah123/typescript-declare-global-class-issue
from typescript.
And I'm telling you that your link doesn't work, it leads to a 404 page. Perhaps you have set it to private.
from typescript.
And I'm telling you that your link doesn't work, it leads to a 404 page. Perhaps you have set it to private.
My bad, made it public
from typescript.
Is this a common pattern for globals class declaration - declare interface
+ declare var
,
/**
* The URL interface represents an object providing static methods used for creating object URLs.
*
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/URL)
*/
interface URL {
hash: string;
host: string;
hostname: string;
href: string;
toString(): string;
readonly origin: string;
password: string;
pathname: string;
port: string;
protocol: string;
search: string;
readonly searchParams: URLSearchParams;
username: string;
toJSON(): string;
}
declare var URL: {
prototype: URL;
new(url: string | URL, base?: string | URL): URL;
canParse(url: string | URL, base?: string): boolean;
createObjectURL(obj: Blob | MediaSource): string;
revokeObjectURL(url: string): void;
};
if the behavior mentioned in the issue description is an expcted one,
should we add this to FAQ?
from typescript.
The behavior mentioned matches JS runtime behavior:
<script>
class Foo {}
console.log(Foo); // [class Foo]
console.log(globalThis.Foo); // undefined
</script>
I don't think it needs to be documented separately if the types match the runtime reality.
from typescript.
Related Issues (20)
- Modify the issue templates `bug_report.yml` and `feature_request.yml` to improve the quality of further submitted issues HOT 6
- Duplicate diagnostics HOT 2
- `const enum` references in the body of nodes with grammar errors are not inlined
- `static` methods can access `this.constructor` without complaints and compiles correctly, but a runtime error shows up HOT 13
- ModuleResolution Node16/NodeNext fails without extension starting on 5.5.0-dev.20240413 HOT 8
- Assigning a @type to an async function emits an error HOT 1
- Type predicate covariant comparison is unsound HOT 1
- Assignability to `asserts` type predicate is not checked HOT 1
- Constrained type param with `keyof` seems to have inconsistent behavior HOT 2
- Why generics are not working as expected? HOT 3
- Type guarding against BigInt using typeof not working - but using instanceof works, even though that javascript code will not work HOT 1
- Type check and Object key completion on overloaded functions with generic types defined in a class are incorrect
- Computed Void is an Expected Param where Void is not HOT 4
- Narrowing empty string or false in generic misbehaves HOT 1
- `tsc` compile `proposal-explicit-resource-management` different from `babel` and `swc` HOT 1
- After enabling noUncheckedIndexedAccess, using ++ on a default undefined does not trigger an error message. HOT 3
- C++-style `const` modifier on class members HOT 2
- Package Import is not working from neither way "CommonJS" or "Module" HOT 4
- Type guard for child not transitive parent object HOT 3
- Error when compiled JavaScript initializes static properties in a class with a hard private method (`#`) that references a static property
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.