What is the reasoning behind Typescript's belief that the symbol 'name' is consistently present?

When working with Typescript, I've noticed that my code is sometimes accepted by the compiler even when I mistakenly write name instead of someObject.name.

To test this behavior, I compiled a file with just console.log(name) and surprisingly, the Typescript compiler accepted it. Could there be some global symbols defined in Typescript?

My current setup includes Typescript 2.8.1 and only NPM itself along with Typescript as global packages.

Answer №1

A specific library exists for the EcmaScript standard, known as ES2016. This library is referred to as "lib.es2016.full.d.ts" (https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es2016.full.d.ts) and it includes the declaration for the "name" property.

In certain code editors (such as Visual Studio Code), you can access the definition of "name" by selecting "Go to definition" from the context menu. Alternatively, you can hover over "name" to see its type (which is "never" and const).

This was implemented to restrict access to the global (Window) name property: https://github.com/Microsoft/TypeScript/issues/1351 https://github.com/Microsoft/TypeScript/issues/9850

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

How to utilize Array.reduce in Node Streams with Typescript

I am still getting the hang of using typescript and am just starting to explore more advanced type declarations. Currently, I am experimenting with chaining a series of node.js stream transforms onto an incoming node.js stream using the reduce method. Th ...

What is the process for obtaining a list of all branches within a repository?

For instance, imagine I have five different branches within the current repository: master, branch1, branch2, branch3, and branch4. How can we use TypeScript for a Probot build to access these branch names? My Attempt: import { Application } from 'p ...

Retrieve contextual information within standard providers

I'm currently using nestjs to create a straightforward HTTP rest API, utilizing typeorm. I have set up 2 Postgres databases and would like the ability to access both, although not necessarily simultaneously. Essentially, I am looking to designate whi ...

Encountering difficulties with a custom Firestore service when attempting to extend it after updating to Angular 9

My custom class that wraps Angular Firestore is designed to be extended and used throughout my application. However, after updating to Angular 9, this setup no longer functions properly. For the complete code snippet, visit . The abstract class wrapper: ...

Tips for effectively packaging the React 17 library alongside the latest JSX transformation feature as an ES Module

I am currently in the process of creating a basic library consisting of React components that I intend to publish as an ES Module package for NPM. With the utilization of React 17, I have incorporated the new JSX transform into my code. To generate the ES ...

I am facing an issue with the asynchronous function as it is displaying an error message

**I am facing an issue with displaying categories. I have attempted to do this using async function, however the data is not showing up** <div class="form-group"> <label for="category">Category</label> <select id="categor ...

Incorrect errors are displayed by VS Code in ts-node shell scripts

I came across an interesting article discussing running a TypeScript file on the command line, and while it seems to be functioning properly, I am encountering invalid errors in VS Code: https://i.sstatic.net/eis3X.png As seen in the terminal (bottom hal ...

A one-to-many relationship does not include the insertion of the parent item

My database has a one to many relationship. When I perform a select operation, everything works correctly. However, when trying to insert data, the insertion occurs in the main table, but updates are triggered in other tables. Error Log from Console [0] ...

Discover the offsetTop value of a child element in React using TypeScript

How can I retrieve the offsetTop of React children in Typescript? Here is an example of my component: export default class FadeIn extends Component { private onScroll = () => { React.Children.forEach(this.props.children, child => { // G ...

Angular displays the error message TS2339, stating that the property 'handleError' is not found on the 'HeroService' type

Hey everyone, I know there are already a few questions out there about Typescript compilation errors, but I'm facing a unique challenge that I can't quite figure out. I'm currently working on the Angular Tour of Heroes app and trying to com ...

Encountering a new challenge in Angular: The error "InvalidPipeArgument: '' for pipe 'AsyncPipe'

Whenever I try to fetch data from the server, these errors keep popping up. This code was written by someone else and I would like to improve upon it. Could anyone suggest the best approach to handle this situation? Are there any coding patterns that sho ...

TypeScript and the Safety of Curried Functions

What is the safest way to type curried functions in typescript? Especially when working with the following example interface Prop { <T, K extends keyof T>(name: K, object: T): T[K]; <K>(name: K): <T>(object: T) => /* ?? */; ...

Async function causing Next JS router to not update page

I'm diving into the world of promises and JavaScript, but I've encountered an issue while working on a registration page following a tutorial on YouTube. Currently, I am using next.js with React and TypeScript to redirect users to the home page i ...

The feature of declaration merging does not function properly with the express 4.17.* request type

Looking to enhance the Request type, I decided to create a folder @types/express. Within this folder, I included a file index.d.ts with the following content. namespace Express { interface Request { user: number; } } Upon referencing req.user in V ...

Issue with retrieving value using Typescript

Every time I attempt to retrieve a value using typescript, I keep encountering the same error message: Unsafe return of an any typed value. This issue arises from a function within the @update method of a select element. <q-select ...

Issue with Angular 4: Mega menu does not automatically close when a menu item is selected from within it

I am currently working on an Angular 4 project that includes a mega menu. My issue is that when I click on a menu within the mega menu, I want it to close. However, in my current setup, the menu always remains open even after clicking on a specific option. ...

Displaying buttons based on the existence of a token in Angular - A guide

Can you assist me with a coding issue I'm facing? I have implemented three methods: login, logout, and isAuthenticated. My goal is to securely store the token in localStorage upon login, and display only the Logout button when authenticated. However, ...

Angular 6 and D3 version 5.5 are causing an issue with the undefined `<variable>`

At the moment, I am attempting to create a Hierarchical Bar Chart in my Angular App using D3. When I click on a bar, I expect my function to recursively reshape the chart. The initial call works fine, but once I click on a bar, the variables become undefin ...

The scope of the inferred type parameter in the generic TypeScript function is overly broad

I'm currently working on creating a function that takes in another function (a React component) as an argument and then returns a related function. My goal is to define specific requirements for the input function, ensuring that it accepts certain pr ...

The type '(params: any) => CSSProperties' does not share any properties with the type 'Properties<string | number>'. Perhaps you meant to invoke it?

Why isn't this property working in react CSS when it is of type CSSProperties? How can I make it work with Properties<string | number>? export const fields: GridFieldsConfiguration[] = [ { ...defaultColDefs, field: &a ...