TypeScript导出界面

时间:2016-11-15 07:00:32

标签: typescript typescript-typings

我正在编写一个库的类型,我想知道如何导出一个接口,以便可以这样导入和使用它:

import * as S from './sanctuary/index';

const myS: Sanctuary = S.create(); // create new instance with different settings
myS.add(1, 2);

S.add(1, 2); // also be able to use the default instance

最小例子:

// Should be somehow reachable
interface Maybe<A>{
  of: <B>(value: B) => Maybe<B>;
}

// Should be able to import as *
interface Sanctuary {

//# create :: { checkTypes :: Boolean, env :: Array Type } -> Module
  create(properties: {checkTypes: boolean, env: SanctuaryType[]}): Sanctuary;

  add(first: number, second: number): number;
}

请注意create的返回类型。起初我用命名空间编写它但我无法弄清楚如何返回命名空间的“类型”。

export as namespace S;

export function create(properties: {checkTypes: boolean,
  env: SanctuaryType[]}): S; // <- does not compile

如何修改/重写它以便可以像开头一样导入它?

Edit1:我还需要导出其他接口。 (编辑的例子)

我在export = <Santcuary>{};然后import S = require('./sanctuary/index');取得了一些成功(这不太理想,但我认为可以使用)。但我不知道如何导出所有其他接口,因为当使用export = TS时将不允许它。它甚至可以做到吗?

0 个答案:

没有答案