microsoft / microsoft/TypeScript
Clean up syntax for importing and using nested type declarations
まだ誰も着手していません。
- 主要言語
- Go
- スター
- 111k
- フォーク
- 14.4k
- 平均マージ
- 1日 19時間
- マージ済み PR(30日)
- 117
説明
Search Terms
- import
- import equals
- nested import
Suggestion
The current syntax for importing nested modules is confusing. For example, to specifically use a single property from an interface I would need to do something like this:
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example } from 'interface.ts';
import Foo = Example.Foo // this is weird, as I'm not actually importing any resource here
From what I understand, import is not importing anything here. It's confusing and looks like it's doing something totally different at first glance. In this case, I could also use type Bind = interfaces.Bind, but I don't want to create a new resource.
A much nicer syntax would be adding a use or take keyword, or adding support for importing nested modules
Use Cases
This suggestion is just for readability and developer experience.
Examples
Importing nested modules with use or take
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example } from 'interface.ts';
take { Foo } from Example;
importing nested interface/namespace values:
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example: { Foo } } from 'interface.ts';
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
interface.ts と file.ts にあるネストされた宣言の例を確認します。既存の import-equals 形式と、提案されている use、take、nested-import 形式も含めます。実装を検討する前に、意図された構文と型チェックの動作を明確にします。完了とするには、合意された設計とコンパイラーおよびリグレッションテストが必要になりますが、issue ではそのいずれも特定されていません。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- typescript
- 領域
- compilers
- issue の種類
- 機能追加
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100