egret-js和ts相互调用

一.TS调用JS的函数或者变量

在项目中可以能会遇到js和ts间变量的相互调用,直接ts直接调用js变量会报错

问题描述:

因为js没有类这个概念,所有访问的一般是js的全局变量或函数,如果在ts对象中直接调用js中的变量或函数时,会直接报错,显示xxx is undefined,意为这个变量没有声明

解决办法:

解决的办法呢,就是在ts文件中声明的声明要引用的js变量,例如:declare let test :any然后就可以使用该全局变量了,如下例子:

 
declare let share_game: any;
 
class LoginView {
 
    public constructor() {
       this.onClickRun();
    }

    public onClickRun() {
        //share_game为js中的变量
        share_game.share_weibo({
            success: this.shareSuccess.bind(this),
            error: this.shareErr.bind(this)
        });
    }
 
    public shareSuccess() {
        alert('成功');
    }
 
    public shareErr() {
        alert('失败');
    }
}

二.JS调用TS的函数或者变量

由于ts文件最终会被编译成为js文件,所有js调用ts文件中的变量,其实等同于ts对象相互间调用,或者js对象间的调用

猜你喜欢

转载自blog.csdn.net/xiaye_go/article/details/82832245
今日推荐