【问题标题】:type script android interface类型脚本android界面
【发布时间】:2022-01-17 04:36:51
【问题描述】:

所以我正在为几个设备开发,基本上需要检查以确定设备。例如

// Android being js interface
if(Android) return setupAndroid()
else if(exampleDevice) return method()
etc

如果您在知道我的问题之前已经这样做了。如果您在非 android 浏览器中打开此应用程序,它将崩溃,因为 android 不存在。我必须这样做,自从我开始以来,我不想停下来,直到我想办法解决这个问题。我试过创建一个 ts 接口但没有用。我需要一种方式来说明这个 Android 接口确实只存在于 android 层中。因此,这种类型的检查将针对每台设备进行。设备数量无关紧要。重要的是如何避免非现有变量的错误。

【问题讨论】:

  • Android 是您创建并安装在 DOM 中的对象吗?为什么不在所有情况下将它指定为 TypeScript 为 declare,然后像你一样在运行时检查它的存在?
  • Android 将不存在,除非您的项目执行了一些代码来创建它。这里最好的解决方案是确保变量始终存在,但它可能是true/false,具体取决于平台。无论哪种方式,如果不了解该变量的来源,就不可能真正回答这个问题。

标签: javascript android typescript


【解决方案1】:

我猜您正在通过WebView.addJavascriptInterface 公开特定的 Android 界面,但就 TypeScript 而言,您应该 declare the global variable 就好像它始终存在一样。如果您想更加安全,请将其标记为可能undefined,以便在使用前始终检查其存在。

interface AndroidType {
  field1: string;
  method1(): void;
}
declare var Android: AndroidType | undefined;

if (Android) {
  Android.field1 = "foo";
  Android.method1();
}

Playground Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-17
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2022-01-12
    • 2011-07-20
    相关资源
    最近更新 更多