microsoft / microsoft/TypeScript
External modules with AMD always requires "exports" even when it is not used
まだ誰も着手していません。
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.3k
- 平均マージ
- 2日 4時間
- マージ済み PR(30日)
- 132
説明
Here's a small external module that explicitly exports a module:
module Foo {
export var foo = 42;
}
export = Foo;
The code generated for this is:
define(["require", "exports"], function(require, exports) {
var Foo;
(function (Foo) {
Foo.foo = 42;
})(Foo || (Foo = {}));
return Foo;
});
This feels like bad AMD since you are requiring the "exports" magic dependency, but then not using it and instead returning Foo directly.
It's annoying for minimal AMD loaders since they can't assume the object return of your module is your "exports" object and have to guess that you really meant to return something that overrode the "exports" object you asked for.
Furthermore, why bother declaring a dependency on 'require' when it's not used?
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず TypeScript の例から問題を再現し、生成された AMD 出力を比較します。コンパイラの AMD external-module の出力パスと、存在する場合はそのリグレッションテストを調査します。未使用の "require" と "exports" の依存関係が出力されず、返されるモジュール値が正しいままであれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript, typescript
- 領域
- compilers
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100