如何在typescript的对象中使用类函数?

如何在typescript的对象中使用类函数?,typescript,protractor,e2e-testing,Typescript,Protractor,E2e Testing,我正在写一篇文章,以结束考试。下面是page对象类的代码 export class AppPage { NodeArrow(node) { let NodeArrow = $$('.toggle-children').get(node); return NodeArrow; } } 我试着在课外使用它 import { AppPage } from './app.po'; describe('Interactive component', async () => {

我正在写一篇文章,以结束考试。下面是page对象类的代码

export class AppPage {

NodeArrow(node) {
  let NodeArrow = $$('.toggle-children').get(node);
  return NodeArrow;
  }
}
我试着在课外使用它

  import { AppPage } from './app.po';
  describe('Interactive component', async () => {
  beforeEach(async () => {
    page.navigateToEditor();
    browser.waitForAngularEnabled(false);
  });
  let page = await new AppPage();
   it('Deleting item in Paramter tab works', async() => {
       await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
    }

但是它说Noderrow是未定义的。我怀疑我是否用打字机脚本正确地写下了这个函数。请告诉我我做错了什么

类的构造函数无法返回承诺,因此您不能等待它

import { AppPage } from './app.po';
describe('Interactive component', async () => {
    beforeEach(async () => {
        page.navigateToEditor();
        browser.waitForAngularEnabled(false);
    });
    let page = new AppPage(); // No await
    it('Deleting item in Paramter tab works', async () => {
        await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
    }
});
如果在正确初始化对象之前需要完成异步代码,则可以使用静态帮助器函数:

export class AppPage {
    private constructor() {
        // non async code 
    }

    static async create() : Promise<AppPage> {
        var r = new AppPage();
        await r.asynInit()
        return r
    }
    async asynInit() : Promise {
        // async cod
        await delay(100);
    }
    NodeArrow(node) {
        let NodeArrow = $$('.toggle-children').get(node);
        return NodeArrow;
    }
}

import { AppPage } from './app.po';
describe('Interactive component', async () => {
    beforeEach(async () => {
        page.navigateToEditor();
        browser.waitForAngularEnabled(false);
    });
    let page = await AppPage.create();
    it('Deleting item in Paramter tab works', async () => {
        await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
    }
});
导出类AppPage{
私有构造函数(){
//非异步代码
}
静态异步创建():承诺{
var r=新的AppPage();
等待r.Asynini()
返回r
}
异步asynInit():承诺{
//异步cod
等待延迟(100);
}
noderRow(节点){
让noderRow=$$('.toggle children').get(节点);
返回noderrow;
}
}
从“/app.po”导入{AppPage};
描述('Interactive component',async()=>{
beforeach(异步()=>{
page.navigateToEditor();
browser.waitForAngularEnabled(false);
});
let page=等待AppPage.create();
它('删除参数选项卡中的项目有效',异步()=>{
wait browser.wait(EC.visibilityOf(page.noderrow(0)),10000);
}
});

从您的
新AppPage()中删除
等待

import {
  AppPage
} from './app.po';

describe('Interactive component', async () => {
  beforeEach(async () => {
    page.navigateToEditor();
    browser.waitForAngularEnabled(false);
  });
  let page = new AppPage(); // remove await
  it('Deleting item in Paramter tab works', async () => {
    await browser.wait(EC.visibilityOf(page.NodeArrow(0)), 10000);
  })
});