web-dev-qa-db-ja.com

TypeScriptでデフォルトでインターフェースをエクスポートする際の制限はなぜですか?

TypeScript 1.5ベータ版を使用しており、インターフェイスをデフォルトのエクスポートとしてエクスポートしようとしています。次のコードは、Visual StudioとWebStormの両方でエラーを引き起こします。

export default interface Foo {...}

ただし、次のコードは正常に機能します。

interface Foo {...}
export default Foo;

これは仕様によるものですか、バグですか、何か間違っていますか?

編集:ご回答ありがとうございます。しかし、質問がありますが、ES6モジュール構文を使用してインターフェイスをインポートする方法としてはどのようなものが受け入れられますか?

これは動作します:

// Foo.ts
export interface Foo {}

// Bar.ts
import {Foo} from 'Foo'; // Notice the curly braces

class Bar {
    constructor(foo:Foo) {}
}

しかし、それが機能するので、デフォルトのエクスポートを許可して中括弧を保存してみませんか?

// Foo.ts
export default interface Foo {}

// Bar.ts
import Foo from 'Foo'; // Notice, no curly braces!

class Bar {
    constructor(foo:Foo) {}
}
47
battmanz

TypeScript v2.4.0ではexport default interfaceこれがpull-requestです 変更を導入しました。

これらの両方を実行できるようになりました。

// Foo.ts
export interface Foo { }

// Bar.ts
export default interface Bar { }    

// Baz.ts
import { Foo } from "./foo";
import Bar from "./bar";

export class Baz implements Foo, Bar 
{

}
14
Shaun Luttin

インターフェイスをエクスポートする必要はありません

// Foo.ts
interface Foo {}

// Bar.ts
class Bar {
    constructor(foo:Foo) {}
}
0
Juan Pablo