JSDoc: a nested @property with a type that does not parse drops every nested @property after it
メンテナーはふだん 1 日以内に返信
@NullVoxPopuli がすでに取り組んでいます。
2026年10月29日 から。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript, typescript
- 領域
- compilers, testing-qa
調査の方向性
Start by tracing how the JSDoc parser handles nested @property tags in the supplied index.js example, then compare its recovery with the flat-property case described in the issue. Use the supplied tsconfig.json and check.ts repro to confirm that only Args.onSave is omitted while Args.onCancel remains in keyof Sig['Args'].
索引モデルが issue の本文から書いたものです。
説明
[!NOTE]
Investigated with Claude (via Claude Code); corrections welcome.
🔎 Search Terms
jsdoc, typedef, nested property, function(, TS1005
🕗 Version & Regression Information
- Works:
6.0.3 - Broken:
7.0.2,7.1.0-beta,7.1.0-dev.20261029.1
CHANGES.md says Closure-style function(...) types are no longer supported, so the TS1005 is expected. This issue is about what happens to the other @property tags in the same typedef.
💻 Code
tsconfig.json
{
"compilerOptions": { "allowJs": true, "checkJs": true, "noEmit": true, "strict": true },
"include": ["index.js", "check.ts"]
}
index.js
/**
* @typedef Sig
* @property {object} Args
* @property {string} Args.name
* @property {function(string)=} Args.onSave
* @property {((v: string) => void)=} Args.onCancel
*/
export {};
check.ts
import type { Sig } from './index.js';
export const a: Array<keyof Sig['Args']> = ['name'];
export const b: Array<keyof Sig['Args']> = ['onSave'];
export const c: Array<keyof Sig['Args']> = ['onCancel'];
🙁 Actual behavior
check.ts(4,45): error TS2322: Type '"onSave"' is not assignable to type '"name"'.
check.ts(5,45): error TS2322: Type '"onCancel"' is not assignable to type '"name"'.
index.js(5,23): error TS1005: '}' expected.
onCancel is also missing, but its type has valid syntax. Every nested property after the one that does not parse is gone.
With flat properties (@property {function(string)=} onSave), only onSave is missing and onCancel is kept. So the problem is in recovery for nested Args.* properties.
🙂 Expected behavior
Only Args.onSave is affected. Args.onCancel is kept, as it is with flat properties.
Additional information about the issue
In real code the only error at the use site is that the property does not exist. For example, a component invocation reports 'onCancel' does not exist in type ..., in a different file from the TS1005. With many typedefs in a codebase, it is hard to connect the two.
- 主要言語
- Go
- スター
- 112k
- フォーク
- 15.4k
- 平均マージ
- 2日 21時間
- マージ済み PR(30日)
- 126
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/TypeScript のほかの issue
-
Won't Fix
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
microsoft/TypeScript#65107 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Native API: formatDiagnosticsWithColorAndContext drops related information without a file location対応中かも @timurzvural が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
microsoft/TypeScript#65087 ·
メンテナーはふだん 1 日以内に返信
-
TS7 LSP: documentHighlight returns nothing when the file path contains '@'再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンBug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
microsoft/TypeScript#64758 ·
メンテナーはふだん 1 日以内に返信
-
Language server (tsc --lsp) exits with code 1 after `shutdown` and `exit`対応中かも @rajnish-verma-22172 が 12 日前に担当しました。 オープンBug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
microsoft/TypeScript#64742 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Class names `eval` and `arguments` are not reported as invalid strict mode bindings対応中かも @dmety が 26 日前に担当しました。 オープンBug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
microsoft/TypeScript#64661 ·
メンテナーはふだん 1 日以内に返信
microsoft/TypeScript の issue をすべて見る
似ている issue
-
[BUG] serviceenvupdater filter does not update KUBERNETES_SERVICE_HOST/PORT in init containers対応中かも @RaphaelFakhri が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
openyurtio/openyurt#2845 ·
メンテナーはふだん 7 日以内に返信
-
enhancement good first issue help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
fix(scan): validate and normalize output format in validate-contract対応中かも @WKr1shna が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
bug good first issue help wanted
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100