TypeScript export/import 函数
TypeScript export/import function
我写了一个模块(通过 npm 从私人仓库安装),其结构如下:
email.ts, utils.ts, index.ts, (一些其他文件)
在我的 email.ts 上,我有以下功能:
export default function sendEmail(toEmail: string, subject: string, content: string): any {
let helper = SendGrid.mail;
let from_email: any = new helper.Email(process.env.FROM_EMAIL);
let to_email: any = new helper.Email(toEmail);
let helperContent: any = new helper.Content("text/plain", content);
let mail: any = new helper.Mail(from_email, subject, to_email, helperContent)
var request = SendGrid.emptyRequest({
method: "POST",
path: "/v3/mail/send",
body: mail.toJSON()
});
//This performs the request with a promise
SendGrid.API(request).then((response: any) => {
//Deal with output as needed
console.log("email was sent!!");
}).catch((err: any) => {
//log.error(err);
});
}
然后,在我的 index.ts 上,我有以下声明:
export * from "./email";
export * from "./errors";
export * from "./logger";
export * from "./objectUtils";
export * from "./queryFilter";
export * from "./templateEngine";
export * from "./utils";
在导入此模块的应用程序中,我将其导入为
import * as Utils from "my-utils";
最后,每当我想使用 sendEmail 函数时,我都会使用以下语句调用它:
Utils.sendEmail(email, subject, content);
然而,这总是会引发错误,指出 "Cannot read property 'sendEmail' of undefined"
.
为什么会这样?以这种方式导出时,我不应该能够使用这种类型的声明吗?
解决方案是什么?
此致
尝试更改
export default function sendEmail
只是
export function sendEmail
我写了一个模块(通过 npm 从私人仓库安装),其结构如下:
email.ts, utils.ts, index.ts, (一些其他文件)
在我的 email.ts 上,我有以下功能:
export default function sendEmail(toEmail: string, subject: string, content: string): any {
let helper = SendGrid.mail;
let from_email: any = new helper.Email(process.env.FROM_EMAIL);
let to_email: any = new helper.Email(toEmail);
let helperContent: any = new helper.Content("text/plain", content);
let mail: any = new helper.Mail(from_email, subject, to_email, helperContent)
var request = SendGrid.emptyRequest({
method: "POST",
path: "/v3/mail/send",
body: mail.toJSON()
});
//This performs the request with a promise
SendGrid.API(request).then((response: any) => {
//Deal with output as needed
console.log("email was sent!!");
}).catch((err: any) => {
//log.error(err);
});
}
然后,在我的 index.ts 上,我有以下声明:
export * from "./email";
export * from "./errors";
export * from "./logger";
export * from "./objectUtils";
export * from "./queryFilter";
export * from "./templateEngine";
export * from "./utils";
在导入此模块的应用程序中,我将其导入为
import * as Utils from "my-utils";
最后,每当我想使用 sendEmail 函数时,我都会使用以下语句调用它:
Utils.sendEmail(email, subject, content);
然而,这总是会引发错误,指出 "Cannot read property 'sendEmail' of undefined"
.
为什么会这样?以这种方式导出时,我不应该能够使用这种类型的声明吗? 解决方案是什么?
此致
尝试更改
export default function sendEmail
只是
export function sendEmail