microsoft / microsoft/TypeScript
TS4055 when generating declaration for return type that uses type of paramter for protected methods
オープン
まだ誰も着手していません。
Bug
Domain: Declaration Emit
Help Wanted
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 132
説明
🔎 Search Terms
TS4055 declaration protected return typeof parameter
🕗 Version & Regression Information
- This is the behavior in every version I tried, and I reviewed the FAQ for entries about declarations
⏯ Playground Link
💻 Code
export interface Properties {
propertyA: number;
propertyB: string;
}
export function getPropertyValue_Ok(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
export class A {
public getPropertyValue_Ok(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
// error TS4055: Return type of public method from exported class has or is using private name 'propertyName'.
protected getPropertyValue_Error(
properties: Properties,
propertyName: keyof Properties,
): Properties[typeof propertyName] {
return properties[propertyName];
}
// error TS4073: Parameter 'propertyValue' of public method from exported class has or is using private name 'propertyName'.
protected setPropertyValue_Error(
properties: Properties,
propertyName: keyof Properties,
propertyValue: Properties[typeof propertyName],
) {
// TODO
}
}
🙁 Actual behavior
The protected methods fail to generate declaration with TS4055 or TS4073.
🙂 Expected behavior
The protected methods should be able to generate declaration similar to the public method or function.
Additional information about the issue
I wonder if there's a way to temporarily suppress this error, becuase ts-ignore doesn't seem to work when generating declaration.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
リンクされた TypeScript Playground と、提供された宣言生成の再現コードから始め、class A の protected メソッドと TS4055/TS4073 診断に焦点を当てます。public メソッドおよびスタンドアロン関数との動作を比較します。完了の条件は、protected メソッドについて、これらのエラーなしで宣言生成が成功することです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 42/100