microsoft / microsoft/TypeScript
Please Allow Mixins to function properly with new-able types
まだ誰も着手していません。
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
Bug Report
If we declare a new-able type, that is a mixin with the generic parameter it uses, the whole type is not processed.
For example, doing this, won't work
// In types.d.ts
namespace test.ts.bug{
var MyType: {
new <T>(): T & {
additional: "somevalue"
};
}
}
// Then, in VS code, we make use of the type as such
/** @extends {test.ts.bug.MyType<{tsc: "cool"|"sweet"}>} */
class SomeClass extends Object{
}
const myVar = new SomeClass()
Suppose you try to use myVar, you won't see the any of the properties corrected listed, and auto-completed.
However, if you declared it like this
// In types.d.ts
namespace test.ts.working{
var MyType: {
new <T>(): {
additional: "somevalue";
main: T
};
}
}
And obviously, did the following in js
// Then, in VS code, we make use of the type as such
/** @extends {test.ts.working.MyType<{tsc: "cool"|"sweet"}>} */
class SomeClass extends Object{
}
const myVar = new SomeClass()
then with const myVar = new SomeClass(), the properties additional, and main.tsc are auto-completed very well.
🔎 Search Terms
mixins new-able newable types
🕗 Version & Regression Information
Same version with vs code
⏯ Playground Link
Playground link with relevant code
🙁 Actual behavior
const myVar = new SomeClass() doesn't auto-complete in VS code
🙂 Expected behavior
const myVar = new SomeClass() is supposed to have the tsc, and additional set to true
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
リンク先の TypeScript Playground を開き、types.d.ts 内の動作しない宣言と動作する宣言の違いを再現します。まず、JSDoc の @extends 式がジェネリックなコンストラクターシグネチャをどのように使用しているかを追跡し、次に、new SomeClass() で期待どおり tsc と additional がオートコンプリートに表示されることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 55/100