microsoft / microsoft/TypeScript
`getJSDocTags` detects decorators inside code blocks as JSDoc tags
オープン
まだ誰も着手していません。
Awaiting More Feedback
Suggestion
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
🔎 Search Terms
- jsdoc
getJSDocTags- decorators
🕗 Version & Regression Information
This is faulty behavior
⏯ Playground Link
https://stackblitz.com/edit/gettextofjsdoccomment-d88fzj?file=main.ts,package.json
💻 Code
import ts from 'typescript';
const filename = 'example.ts';
const code = `
/**
*
* @usageNotes
*
* Use \`afterNextRender\` to read or write the DOM once,
* for example to initialize a non-Angular library.
*
* ### Example
* \`\`\`ts
* @Component({
* selector: 'my-chart-cmp',
* template: \`<div #chart>{{ ... }}</div>\`,
* })
* export class MyChartCmp {
* @ViewChild('chart') chartRef: ElementRef;
* chart: MyChart|null;
*
* constructor() {
*
* }
* }
* \`\`\`
*/
class Foo {};
`;
const sourceFile = ts.createSourceFile(
filename,
code,
ts.ScriptTarget.ESNext,
true
);
const visitNode = (node: ts.Node) => {
ts.forEachChild(node, visitNode);
const tags = ts.getJSDocTags(node);
if (tags.length) {
tags.forEach((tag) => {
const comment = tag.comment!.slice(1) as any;
console.log(
'> ',
tag.tagName.getText(),
' | ',
ts.getTextOfJSDocComment(comment)
);
});
}
};
ts.forEachChild(sourceFile, visitNode);
🙁 Actual behavior
We get 2 distinct tags:
> usageNotes | se `afterNextRender` to read or write the DOM once,
for example to initialize a non-Angular library.
### Example
```ts
> Component | {
selector: 'my-chart-cmp',
template: `<div #chart>{{ ... }}</div>`,
})
export class MyChartCmp {
> ViewChild | 'chart') chartRef: ElementRef;
chart: MyChart|null;
constructor() {
}
}
🙂 Expected behavior
Only one tag should be extracted : usagenotes
Additional information about the issue
No response
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
getJSDocTags API から始め、issue の StackBlitz 例を使って動作を再現します。fenced code block の前後で JSDoc コメントがどのように解析されるかを追跡し、その後 usageNotes タグだけが抽出され、デコレーターのようなテキストが無視されることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100