2017-08-24 16 views
2

これを1行に書くにはどうすればよいですか?ES6/Typescript import:1行に*と名前をインポート

import * as Express from 'express'; 
import { Application, NextFunction, Request, Response } from 'express'; 

あなたのダンのDev

+0

'*'輸入「急行」からのすべて。私は他のモジュールを別々にインポートする必要性を理解していません – koolkat

答えて

1

importexportは静的にそれらを分析することを可能にする構文制限されている:the documentationに記載されているとおり

を:

「モジュール名からインポートdefaultMemberを";

import * as "module-name";

import {member} from "module-name";

"module-name"からimport {member as alias};

"module-name"から{member1、member2}をインポートします。

import "{module1、member2 as alias2、[...]}" module-name "からインポートします。

"module-name"からimport defaultMember、{メンバー[、[...]]};

import defaultMember、* "module-name"の名前です。

import "module-name";

見ることができるように、import * as name, { member } from "module-name"はありません。したがって、サポートされていません。

サポートされていない理由は、import * as name, { member } from "module-name"が互換性があるためです。メンバーを1つずつインポートするか、name名前空間としてインポートします。

両方が何らかの理由で使用する必要がある場合、それは次のようになります。

import * as Express from 'express'; 
import { Application, NextFunction, Request, Response } from 'express'; 

それとも輸出が本当の変数とないタイプ/インタフェースであれば、それができる:

import * as Express from 'express'; 
const { Application, NextFunction, Request, Response } = Express; 
+0

こんにちは、詳細な答えをありがとう、私は間違いなく言及されたドキュメントを詳しく見ていきます。 constを使った最後のコンストラクタ(これまでに試した)は残念ながら動作しませんでしたが、はるかに論理的です。 –

+0

私は説明を追加しました。私はそれらがインターフェイスであり、実際のクラスではないと想定しています。そうではありませんが、構造破壊は何もないので意味がありません。 'foo:Express.NextFunction'がクリーナーを読み込み、インタフェースがクラスと混同されないため、最初のオプションは正しいものです.btwは、接尾辞は 'I'です。 – estus

+0

はい、すべてのインターフェイスです:) –

関連する問題