为什么在TypeScript中默认导出界面的限制?
我正在使用TypeScript 1.5testing版,我试图导出一个接口作为默认导出。 以下代码在Visual Studio和WebStorm中都会导致错误:
export default interface Foo {...}
但是,下面的代码工作正常:
interface Foo {...} export default Foo;
这是devise,这是一个错误,或者我做错了什么?
编辑:谢谢你的回答。 但是,它提出了一个问题,那么使用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
。 这是介绍变更的请求 。
我们现在可以做这两个:
// 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 { }