【发布时间】:2018-01-30 18:13:06
【问题描述】:
我是打字稿的新手,在处理我在课堂上创建的问题时
export class ModuleInfoContainer extends Array<ModuleInfo> {
constructor() {
super();
}
search(id: number) {
let k: ModuleInfo;
this.every(a => {
k = a.search(id);
return !k;
});
return k;
}
}
我希望它可以工作,但是在调试时,所有数组函数都可以访问,但 ModuleInfoContainer 的成员函数 search 无法访问。
但是经过几次谷歌搜索后,我得到了一个示例,并最终得到了此代码
export class ModuleInfoContainer extends Array<ModuleInfo> {
constructor() {
super();
}
search = function (id: number) {
let k: ModuleInfo;
this.every(a => {
k = a.search(id);
return !k;
});
return k;
};
}
它按预期工作。
第一个代码有什么问题?
编辑:ModuleInfo 类
export class ModuleInfo {
Id: number;
Name: string;
DisplayName: string;
ChildModules: ModuleInfoContainer;
DependsOn: ModuleInfo[];
parent: ModuleInfo;
search(id: number): ModuleInfo {
if (this.Id === id) {
return this;
} else if (this.ChildModules && this.ChildModules.length) {
return this.ChildModules.search(id);
}
return undefined;
}
}
这就是我试图将其称为我的搜索功能的方式:
let k = new ModuleInfoContainer();
k.search(1);
typescript 编译成功,但运行时出错,提示 k does not have a member function named search(错误可能与 chrome 给出的不完全相同,但含义相同)。
但是第二个代码工作正常。
【问题讨论】:
-
你是如何使用它的?我刚刚做了一个操场示例,效果很好。
-
我正在使用 Angular 4 的代码,在 chrome 中第一个只是说没有找到函数搜索。当我尝试调用
let k = new ModuleInfoContainer(); k.search(1);之类的东西时,我还没有在任何其他浏览器上进行调试。 -
可以分享一下 ModuleInfo 类吗?
-
我用 ModuleInfo 类更新了问题
标签: typescript