javascript - 在 Typescript 中导出一组函数
我刚接触 Typescript,我花了一段时间查找各种方法来做这件事,但我卡住了。
我想创建一个库文件,它只包含一组不相关的函数,我可以在任何地方导入。在普通的 Javascript 中,我可以像这样做:
let libraryFunctions = {};
libraryFunctions.a = () => {
return true;
}
module.exports = libraryFunctions;
然而,在 Typescript 中,我只是收到一个抱怨,显示 Property 'a' does not exist on type {}。然后我看到我可以做类似这样的事情:
interface ILibraryFunctions {
a(): boolean;
};
export class LibraryFunctions implements ILibraryFunctions {
a = () => {
return false;
}
}
然而,创建一个类似乎有些过头(除非我对 TypeScript 的类理解有误)。有人能指引我正确的方向吗?
谢谢!
答案#1
在 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;
也就是说,正如丹尼尔在下面的评论中所说,答案开头提到的方法更可取:
从实际情况来看,你不会用
a来export default一个对象,你会直接将a本身作为默认导出。也就是说,你不会按以前写的方法做的一个原因是,现有的工具可以更容易地对顶级导出进行 tree-shake,而不能对一个实际的对象进行。另外,使用第一种语法可以让你在有多个导出时使用 ES2015 的命名导入语法。
