57

我正在使用 TypeScript 1.5 beta,并且正在尝试将接口导出为默认导出。以下代码会在 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) {}
}
4

2 回答 2

27

TypeScript v2.4.0 允许export default interface. 这是引入更改的拉取请求。

我们现在可以做到这两个:

// 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 
{

}
于 2017-07-23T22:16:47.100 回答
-13

不需要导出接口

// Foo.ts
interface Foo {}

// Bar.ts
class Bar {
    constructor(foo:Foo) {}
}
于 2018-12-21T16:19:01.783 回答