在Typescript中导出函数集合

时间:2017-06-10 21:34:06

标签: javascript typescript

我是打字稿的新手,我花了一些时间搜索各种方法来做到这一点,但我被卡住了。

我想创建一个库文件,其中只包含一系列无关的函数,我可以在任何地方导入。在常规Javascript中,我可以做类似的事情:

let libraryFunctions = {};
libraryFunctions.a = () => {
  return true;
}
module.exports = libraryFunctions;

然而,在打字稿中我只是抱怨Property 'a' does not exist on type {}。然后我看到我可以这么类似:

interface ILibraryFunctions {
  a(): boolean;
};

export class LibraryFunctions implements ILibraryFunctions {
  a = () => {
    return false;
  }
}

但是,创建一个类似乎太过分了(除非我对Typescript&#39的类的理解是错误的)。有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

在TypeScript中,只需export即可,与ES2015模块(也由babel实现)类似:

export function a() {
  return true;
}

// or alternatively

export const b = () => false

然后,在另一个文件中

import {a, b} from './thatFirstFile';
// or
import * as libraryFunctions from './thatFirstFile';

至于您的具体情况,您不需要实施课程:

interface ILibraryFunctions {
  a(): boolean;
};

const myLib: ILibraryFunctions = {
  a() { return true; }
};

export default myLib;

也就是说,从Daniel's comment below:

开始,答案顶部提到的方法更可取
  

实际上,您不会export default使用a的对象,您直接默认导出a本身。也就是说,你不会做所写内容的一个原因是,现有的工具可以更容易地从顶级出口中撼动,而不是从实际对象中撼动。此外,使用第一种语法可以在有多个导出时使用ES2015的命名导入语法。