提问人:DaniloMourelle 提问时间:5/12/2023 更新时间:5/12/2023 访问量:30
使用此函数函数到不同的文件中
Function into a different file using this
问:
我有一个类,它接收已知接口的其他类和一个像这样的主方法:
// BusinessLayer.ts
import getForm from "./getForm";
/*
* other import statements
*/
class BusinessLayer {
constructor(
protected cacheLayer: ICacheLayer,
protected databaseLayer: IRepositoryLayer,
protect serviceLayer: IServiceLayer,
) {}
async execute(arg1: number, arg2: string) {
const { dependencies, formTree } = await getForm();
...
...
...
return result;
}
}
为了保持简洁,我将这个函数拆分为更小的函数,每个函数都在一个文件中,例如getForm()
// getForm.ts
import type BusinessLayer from "../BusinessLayer";
async function getForm(this: BusinessLayer) {
const formFromCache = await this.cacheLayer.getFormFromCache();
if (formFromCache) {
return formFromCache;
}
const formFromDB = await this.databaseLayer.getFormFromDatabase();
if (!formFromDB) {
throw new Error("Form Not Found");
}
const formValue = formFromDB.value;
return formValue;
}
export default getForm;
首先我得到了一个依赖循环错误,这是由 on getForm.ts 解决的,但现在我得到了import type
“void”类型的“this”上下文不能分配给“BusinessLayer”类型的方法的“this”.ts(2684)
答:
1赞
Yury Tarabanko
5/12/2023
#1
除了我的评论。您需要使用所需的上下文调用函数。操场
const { dependencies, formTree } = await getForm.call(this);
评论
0赞
DaniloMourelle
5/13/2023
Tks 伙计,这真的完成了工作!!:)
评论
getForm