Typescript类成员函数不可访问

时间:2017-08-22 10:06:25

标签: typescript

我是打字稿的新手,在处理我在课程

之后创建的问题时
 PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
        if (powerManager.isInteractive()) {
            startActivity(intent);
        }
    }
    else{
        //noinspection deprecation
        if (powerManager.isScreenOn()) {
            startActivity(intent);
        }
    }

我希望它能够正常工作,但在调试时,所有数组函数都可以访问,但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; } } 的成员函数search无法访问。 然而,经过一些谷歌搜索我得到了一个例子,并最终得到了这个代码

ModuleInfoContainer

它按预期工作。

第一段代码出了什么问题?

编辑: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;
  }
}

typescript编译成功,但运行时出错,说let k = new ModuleInfoContainer(); k.search(1); (错误可能与chrome给出的错误完全相同,但含义相同)。 但是第二个代码工作正常。

1 个答案:

答案 0 :(得分:0)

经过一番搜索,我找到了这些链接

  1. https://github.com/Microsoft/TypeScript/issues/13720
  2. https://github.com/Microsoft/TypeScript/wiki/FAQ#why-doesnt-extending-built-ins-like-error-array-and-map-work
  3. 因此,当针对ES5或更低版本时,这是一个已知的打字稿问题。