我是打字稿的新手,我花了一些时间搜索各种方法来做到这一点,但我被卡住了。
我想创建一个库文件,其中只包含一系列无关的函数,我可以在任何地方导入。在常规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的类的理解是错误的)。有人能指出我正确的方向吗?
谢谢!
答案 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的命名导入语法。