When encountering the statement "Typescript never extends `${infer P}` will produce a different outcome compared to never extends `${infer P}/

type a = never extends `${infer P}` ? P : 1 // never
type b = never extends `${infer P}/` ? P : 2 // string

playground

never encompasses all types, which is why we don't return 1 or 2

However, it's puzzling why a is never but b is string, how does that make sense???

I initially thought never for both because ${never}/ returns never, but string ????

how can this be explained?

Answer №1

The reason is likely attributed to the fact that string interpolation ultimately results in a string. Take for instance, ${infer P}/, where there is a slash at the end leading the type to be inferred as a string. Conversely, when there is no such ending character present in the interpolation, the type checker concludes it as never.

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

Incorporate an image icon into an Angular grid

Currently, I am in the process of building a web application using Angular. The main goal is to create a grid and color specific cells based on data input. Below is the snippet of my HTML code: <mat-grid-list cols="10"> <mat-grid-tile * ...

Adding numbers together in TypeScript is a simple task that can be done using the

While it may appear to be a simple question, my attempts to find relevant results have been fruitless due to Google search being case insensitive. Consider the following code snippet: items[5] = "5\,5" totalAmount: number = 5 totalAmount = totalAmou ...

Attention: certain content may have been removed due to HTML sanitation

Hi there, I'm currently working on incorporating a search bar into a modal window by embedding HTML within the modal body. Here's how I've written the code: onClick() { const dialogRef = this.modal.alert() .size('lg' ...

Using jQuery to bind data to Angular's *ngFor directive

I am currently in the process of customizing a horizontal timeline resembling https://codepen.io/ritz078/pen/LGRWjE/. The demo includes hardcoded dates which I want to replace with an array of Dates (timelineParsedDates) <ol> <li><a href ...

Issues arise with Jest tests following the implementation of the 'csv-parse/sync' library

Currently utilizing NestJs with Nx.dev for a monorepo setup. However, I've come across an issue after installing csv-parse/sync - my Jest tests are now failing to work. Jest encountered an unexpected token Jest failed to parse a file due to non-stand ...

Creating autorest client based on various OpenAPI versions

I'm currently exploring options for creating a Typescript client from our .NET API. After researching various tools, I decided to go with Autorest, as it is Node-based and fits my skillset. While I am aware of Swashbuckle, my knowledge leans more towa ...

Adjusting characteristics in Angular dynamically through JSON

Having trouble changing the value of [icon]="reactAtom" to use a JSON value? Need assistance in updating the [icon] value based on the 'featureItem' received from the parent component. HTML <div> <fa-icon [icon]="reactAtom" class="i ...

Struggling with TypeScript tests elusive to Jest

I'm encountering a strange error while attempting to write a jest test. TypeError: jest_1.it is not a function 9 | 10 | describe('Health check', () => { > 11 | it('GET works', async () => { Instead of displayi ...

Navigating through ionic2 with angularjs2 using for-each loops

I developed an application using IONIC-2 Beta version and I am interested in incorporating a for-each loop. Can anyone advise if it is possible to use for each in Angular-V2? Thank you. ...

Problem with Angular 5: Data Binding Issue未知EncodingException

Struggling to understand... I want to make a GET request to my service to retrieve the specific hardware associated with the barcode I scanned - this part is working correctly. The hardware information is returned as an object that looks like this -> ...

Angular doesn't support this particular type as an injection token

I'm attempting to create a constructor with a type of string, but I keep encountering the following error: This particular type is not supported as an injection token @Injectable({providedIn: 'root'}) export class DataService { const ...

Accessing router params in Angular2 from outside the router-outlet

I am currently working on a dashboard application that includes a treeview component listing various content nodes, along with a dashboard-edit component that displays editable content based on the selected branch of the tree. For example, the tree struct ...

Having difficulty with TypeScript typings implementation

Update: I have revised the post to provide a clearer explanation of the steps I have taken and the challenges I am encountering Initially, I created a basic html/js page. I also implemented xregexp from a cdn. var reg = XRegExp("^lights:(?<option> ...

Understanding Definition Files in Ionic 2 Using Typescript

For an Ionic 2 project, what location is recommended for storing custom TypeScript definition files? I want to define interfaces for certain Cordova plugins to prevent VS Code from flagging them as errors. ...

Issue with promise chaining detected in Mocha testing framework

Encountering an error when attempting to enter text using sendkeys or click a button in a popup with TypeScript promise chaining in Mocha. composeNewMessage(mailCount: number, recepientsName: any, subject: string, messageContent: string, recipientLink?: ...

Problem with (click) event not triggering in innerHtml content in Angular 4

For some reason, my function isn't triggered when I click the <a... tag. Inside my component, I have the following code: public htmlstr: string; public idUser:number; this.idUser = 1; this.htmlstr = `<a (click)="delete(idUser)">${idUser}&l ...

Guide to incorporating Moengage into Node.js APIs for delivering email notifications based on user interactions

How can Moengage be integrated into Node Js APIs for sending notifications to users based on user events? I have reviewed the Moengage API documentation but did not find relevant information on integrating Moengage with Node Js APIs. Is there a step-by-s ...

a guide on accessing key value elements within an array using Ionic 3

Just diving into the world of Ionic, I am currently working on a task to showcase products on the cart page that have been added to the cart. Upon fetching data from a REST API, I can see the response below in the console. "items": { "29.2.2.0.YTowOnt ...

Why are certain typescript 3.7 features not accessible when targeting ESNext?

Currently, I am utilizing bigint literals within my Angular project which are only available in ESNext. However, it seems that the null-coalescing operator mentioned here is not accessible when targeting ESNext. this._id = id ?? Util.makeGuid() This line ...

Having trouble with mapping options in the form? encountering issues with reading properties of undefined when using the map function?

I'm currently working on creating a SELECT element inside a form, where I need to iterate through an object (yes, I know it's typically done with arrays). I'm using antd for styling my code. I'd appreciate any help in identifying what m ...