如何在TypeScript中向标准库中声明的现有联合类型添加可能的值?

5gfr0r5j  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(141)

考虑在lib.dom.d.ts中声明的PermissionName类型:

type PermissionName = "geolocation" | "notifications" | // More...

我可以从我自己的app.d.ts文件中添加一个值吗?例如(代码不起作用):

declare global {

    type PermissionName = PermissionName | "local-fonts";

}

export {}

以便此代码能够工作(这就是我不能声明新类型的原因,因为其他API正在使用此类型)?

await navigator.permissions.query({
    name: "local-fonts"
});

当前解决方案:

await navigator.permissions.query({
    name: <any>"local-fonts"
});
ql3eal8s

ql3eal8s1#

您需要扩充的不是PermissionName,而是navigator.permissions.query
Playground

declare global {
  interface Permissions {
    query(permissionDesc: { name: 'local-fonts' }): Promise<PermissionStatus>;
  }
}
navigator.permissions.query({
  name: "local-fonts"
});

export { }

相关问题