microsoft / microsoft/TypeScript

Parameters in functions with type parameters are not contextually-typed

Abierto
#61,791 0 comentarios 0 reacciones 1 asignado Reclamado por @ahejlsberg Ver en GitHub
Needs Investigation
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 Search Terms

type parameters generic conextual parameter types context sensitive

### 🕗 Version & Regression Information

- This is the behavior in every version I tried

### ⏯ Playground Link

https://www.typescriptlang.org/play/?ts=5.9.0-dev.20250601#code/KYDwDg9gTgLgBAE2AYwDYEMrDsiA7AZ3gDM8AuOAHgBUAaOAQSgHMC5QZg8E2mp0AnpXR4BAPnoAlYDDEAKALAAoOHALBUxCnWWqARhAQCKcmAAsAlgW30AdPcysKTVgEo4AXjFwA4l2D8MNDColIy9HjAAG4BYsruXnBy9raO1owsBAne0jDKyqCQsDj4RHAQANaecKRyAN5wALbABATozMAUAETEEBBdcAC+9MQArnjIMBb4AFRy5HB4o416Ae51uiWEEKjAtqgQzKaWBLbNre3AEa7KgzdKBeDQ8LiE8HgQ1bUN520d3b1+kMRuNJtM8DNKAA5eQLKHrTavAg7PYHI7mKxnFp-K6Le53ZRAA

### 💻 Code

```ts
export declare const fn: , Ret>(
self: T,
body: (this: T, ...args: Args) => Generator
) => (...args: Args) => Ret

export const ok = fn({ message: "foo" }, function*(n: number) {
console.log(this.message, n) // ok
})

export const no = fn({ message: "foo" }, function*(n: N) {
console.log(this.message, n) // error
})
```

### 🙁 Actual behavior

The second case errors

### 🙂 Expected behavior

Both of those should work fine

### Additional information about the issue

Given TS is able (at times) to infer new generic signatures based on generic function arguments (notice the return type of the failing case: `const no: (n: N) => void`), it makes sense to assign contextual parameter types.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.