我需要在我的Ionic应用程序中使用WebShareAPI。
下面是Introducing the Web Share API中建议的代码
if (window.navigator && window.navigator.share) {
window.navigator.share({
title: 'title',
text: 'description',
url: 'https://soch.in//',
})
.then(() => console.log('Successful share'))
.catch((error) => console.log('Error sharing', error));
} else {
alert('share not supported');
}
但是,Typescript编译失败,并出现以下错误:
[11:31:11] typescript: src/pages/channel_home/channel_home.ts, line: 89
Property 'share' does not exist on type 'Navigator'.
这里解释了一个可能的原因DOM lib: add support for navigator.share
然而,我想知道一些变通办法,使WebShareApi工作在我的离子应用程序,特别是在任何Angular 或 typescript 应用程序一般。
9条答案
按热度按时间xurqigkl1#
根据这个答案,你可以试着定义一个
any
类型的变量,并给它赋一个类型导航器的值。这个问题与typeScript类型有关。另一个选择是扩展接口Navigator,正如我在上面发布的链接中所建议的那样。
t1rydlwq2#
对于任何想找到正确答案的人,只需将以下内容添加到
global.d.ts
文件中:这正确地反映了级别1 API。
f8rj6qna3#
将
navigator
声明为any
kyxcudwk4#
【2020年更新】
这个问题在Typescript的最新版本中得到了修复(我不确定是哪个版本,但我猜是从
v4.3-beta
版本开始)。另外,下面共享的示例一旦更新到最新版本将无法工作,因为它与Typescript自己的键入冲突。因此,不要应用这些更改或保持类型与父类型相似:
share
属性已从可选状态中删除,根据规范,详细信息implemented in Firefox,Firefox中的更改我们可以通过
Typescript
的方式来实现:首先,我们需要为项目定义自定义类型。因此,我们需要在根目录下定义一个
/typings
或/@types
文件夹。完成后,您需要更新
tsconfig.json
文件,将新的自定义类型文件夹指向该文件夹。这将允许Typescript在
/typings
文件夹中查找自定义类型上述参考:
完成以上操作后,我们需要创建一个全局
.d.ts
文件,Typescript将在其中查找自定义类型。因此,在您的/typings
文件夹中创建一个名为global.d.ts
的新文件。Navigator
。*一旦你声明了上面的接口,Typescript将允许你使用
navigator.share
,但是你需要把它放在一个条件块中,因为share
是可选的属性,它可能存在也可能不存在于浏览器中。希望这对你有帮助!
q0qdq0h25#
这也是可行的,我们不需要创建newVariable。
wqsoz72f6#
在我的例子中:在Angular中,在我使用的模块上:
和类型脚本显示错误“MozGetUserMedia不是属性”。
我修复使用:
也许同样的方法也适用于您:
rdrgkggo7#
这对我很有效
qeeaahzv8#
如果你继续得到错误,尽管在这个网站上的建议,请确保您的页面是通过
https
服务器.共享功能是不可用的纯http.下面的摘录为我工作.x4shl7ld9#
不要直接使用navigator.share/caches/serial或其他类型,这会导致HTTP连接出错。在直接调用该属性之前,请验证它是否存在。