microsoft / microsoft/TypeScript

Method use showing as deprecated when callback function includes type hint

Aperta
#59,488 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Needs More Info
Lingua principale
Go
Stelle
111k
Fork
14.4k
Merge medio
1g 19h
PR unite (30g)
117

Descrizione

Type: Bug

Using jQuery globally, I noticed that the usage of .on() is showing as deprecated when my event handler function includes a typehint. I could be wrong but I don't believe this is due to the type definitions and might be something with TS.

The below shows .on with a strikethrough that it is deprecated.

$(document).on("click", ".search-tag", /** @this {HTMLElement} */ function() {
    selectedKeywords.delete(this.dataset.module);
    $(this).remove();
});

image

Removing the typehint from the callback makes the deprecation notice go away.

$(document).on("click", ".search-tag", function() {
    selectedKeywords.delete(this.dataset.module);
    $(this).remove();
});

image

Below is what the hover shows for the deprecation:
image

It seems the be complaining about the use of JQueryEventObject but only when the type hint is present.

VS Code version: Code 1.91.1 (f1e16e1e6214d7c44d078b1f0607b2388f29d729, 2024-07-09T22:06:49.809Z)
OS version: Windows_NT x64 10.0.22631
Modes:
Remote OS version: Linux x64 4.18.0-553.8.1.el8_10.x86_64

System Info
Item Value
CPUs 13th Gen Intel(R) Core(TM) i7-1360P (16 x 2611)
GPU Status 2d_canvas: enabled
canvas_oop_rasterization: enabled_on
direct_rendering_display_compositor: disabled_off_ok
gpu_compositing: enabled
multiple_raster_threads: enabled_on
opengl: enabled_on
rasterization: enabled
raw_draw: disabled_off_ok
skia_graphite: disabled_off
video_decode: enabled
video_encode: enabled
vulkan: disabled_off
webgl: enabled
webgl2: enabled
webgpu: enabled
Load (avg) undefined
Memory (System) 31.68GB (18.95GB free)
Process Argv --folder-uri vscode-remote://ssh-remote%2Bmlinks-dev/home/cgoepfrich2/public_html/mlinks
Screen Reader no
VM 0%
Item Value
Remote SSH: mlinks-dev
OS Linux x64 4.18.0-553.8.1.el8_10.x86_64
CPUs Intel(R) Xeon(R) Gold 6230R CPU @ 2.10GHz (2 x 0)
Memory (System) 7.52GB (1.23GB free)
VM 100%
Extensions (25)
Extension Author (truncated) Version
ccl-tools DSH 0.0.11
vscode-apache mrm 1.2.0
vscode-edge-devtools ms- 2.1.5
jupyter-keymap ms- 1.1.2
remote-containers ms- 0.375.1
remote-ssh ms- 0.112.0
remote-ssh-edit ms- 0.86.0
remote-wsl ms- 0.88.2
vscode-remote-extensionpack ms- 0.25.0
remote-explorer ms- 0.4.3
remote-server ms- 1.5.2
vscode-jsp pth 0.0.3
pdf tom 1.2.2
highlight-matching-tag vin 0.11.0
vscode-intelephense-client bme 1.10.4
vscode-svgviewer css 2.0.0
transformer dak 1.12.1
gitlens eam 15.2.3
gitlab-workflow Git 5.2.0
todo-tree Gru 0.0.226
vscode-dotnet-runtime ms- 2.1.1
vsliveshare ms- 1.0.5936
vscode-xml red 0.27.1
vscode-yaml red 1.15.0
php-debug xde 1.35.0

(1 theme extensions excluded)

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia riproducendo in VS Code l’esempio fornito di jQuery-.on() con e senza l’indicazione di tipo JSDoc @this {HTMLElement}, quindi traccia il modo in cui TypeScript gestisce il callback e l’overload deprecato. Il lavoro è completato quando l’uso valido di .on() non viene più contrassegnato come deprecato quando è presente l’indicazione di tipo, con un test di regressione che copra entrambi gli esempi.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, jquery, typescript
Ambito
tooling
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.