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

2024-05-25

我正在使用 TypeScript 1.5 beta,并且尝试将接口导出为默认导出。以下代码会在 Visual Studio 和 WebStorm 中导致错误:

export default interface Foo {...}

但是,下面的代码可以正常工作:

interface Foo {...}
export default Foo;

这是设计使然,是错误,还是我做错了什么?

EDIT:谢谢您的回答。然而,这就引出了一个问题,那么使用 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) {}
}

TypeScript v2.4.0 允许export default interface. 这是拉取请求 https://github.com/Microsoft/TypeScript/commit/5ef6192c20c051d3b03bc0059b7a1e0a86163379这带来了变化。

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

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

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 TypeScript 中默认导出接口有限制? 的相关文章

随机推荐