microsoft / microsoft/TypeScript

Method use showing as deprecated when callback function includes type hint

Open
#59,488 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Needs More Info
Dominant language
Go
Stars
111k
Forks
14.4k
Avg merge
1d 19h
Merged PRs (30d)
117

Description

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)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the provided jQuery .on() example in VS Code with and without the JSDoc @this {HTMLElement} type hint, then trace how TypeScript handles the callback and deprecated overload. Done means the valid .on() usage is no longer marked deprecated when the type hint is present, with a regression test covering both examples.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, jquery, typescript
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.