Фон:
Я создаю приложение, которое будет работать с Permissions и Clipboard API. Стандартная библиотека Typescript не имеет наборов для большинства передовых API буфера обмена, поэтому я решил создать файл .d.ts
для расширения таких неполных интерфейсов. Он содержит такие объявления:
declare class ClipboardItem {
constructor(data: { [mimeType: string]: Blob });
}
, и я ссылаюсь на него из своего кода следующим образом: /// <reference path="clipboard.d.ts" />
Пока все хорошо: добавляются отсутствующие интерфейсы, расширяются существующие, автозаполнение работает правильно. Но потом я пришел к запросу "clipboard-read"
разрешения. Я хочу передать эту строку при вызове navigator.permissions.query({name: "clipboard-read"})
, где тип name
определен в стандартной библиотеке Typescript следующим образом:
type PermissionName = "geolocation" | ... | "clipboard";
И там нет «чтения из буфера обмена». Поэтому я хочу расширить его, чтобы он включал «чтение из буфера обмена». Теперь, если в моем файле .d.ts
я пишу
type PermissionName = 'clipboard-read';
, это показывает мне ошибку Duplicate identifier 'PermissionName'.ts(2300)
. Я пробовал другие варианты, но все они сводились к ошибке идентификатора дубликата.
Вопрос:
Есть ли способ расширить не interface
, а type
, который уже был глобально объявлено в другом месте? Что я должен сделать, чтобы достичь этого?