为什么在TypeScript中默认导出接口的限制?

时间:2015-05-15 23:12:43

标签: typescript typescript1.5

我使用的是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) {}
}

2 个答案:

答案 0 :(得分:12)

TypeScript v2.4.0允许export default interface。引入变化的Here is the 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 
{

}

答案 1 :(得分:0)

没有必要导出界面

// Foo.ts
interface Foo {}

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