Typescript: Отсутствуют декларации API ResizeObserver

Созданный на 13 нояб. 2018  ·  21Комментарии  ·  Источник: microsoft/TypeScript

Условия поиска

ResizeObserver

Предложение

lib.dom.ts не включает объявления ResizeObserver API.

Случаи использования

ResizeObserver - это вещь, которая получает некоторую поддержку в 2018 году, и я не нашел здесь упоминания о ResizeObserver.

Контрольный список

Мое предложение соответствует этим рекомендациям:

  • [x] Это не будет критическим изменением в существующем коде TypeScript / JavaScript.
  • [x] Это не повлияет на поведение существующего кода JavaScript во время выполнения.
  • [x] Это может быть реализовано без генерации разных JS в зависимости от типов выражений.
  • [x] Это не функция времени выполнения (например, функциональность библиотеки, синтаксис без ECMAScript с выводом JavaScript и т. д.)
  • [x] Эта функция согласуется с остальными целями дизайна TypeScript .
lib.d.ts Question

Самый полезный комментарий

Пора добавить, он был отправлен в Safari в прошлом месяце. Это означает, что буквально все браузеры его поддерживают.

Все 21 Комментарий

Я думаю, что стандартные определения типов не поставляются с экспериментальными API-интерфейсами намеренно, особенно если поддержка браузеров почти отсутствует.

Сейчас мы генерируем библиотеку по адресу https://github.com/Microsoft/TSJS-lib-generator из стандартизованных веб-файлов IDL. Этот файл содержит список IDL, из которых мы генерируем библиотеку. Как только функция попадет, например, в IDL whatwg common dom interfaces , мы выполним синхронизацию и получим ее. Пройдет какое-то время (и, вероятно, поддержка браузера будет намного лучше), пока это не произойдет. Я бы порекомендовал пока просто добавить дополнительные объявления в ваш проект локально, так как я не думаю, что мы возьмем PR для отмены чего-то, что все еще экспериментально.

@weswigham полезно знать! Спасибо.

Я бы порекомендовал просто добавить дополнительные объявления локально в ваш проект.

Как правильно разместить эти объявления с точки зрения Typescript? С учетом кода resize-Observer-polyfill

Подойдет любой файл в вашем проекте. Многие люди рекомендуют отдельный globals.d.ts или что-то подобное для подобных вещей.

@weswigham Это, кажется, нужно пересмотреть в наши дни?

Все основные браузеры поддерживают его с учетом вечнозеленой модели: Firefox (68-69), Safari (предварительная версия Tech Preview, которая будет доступна в следующем Safari, без сомнения, будет запущена вместе с MacOS Catalina), Chrome, Edge с Chromium и т. Д.

Также обновлены данные CaniUse по этому вопросу, IIRC: https://caniuse.com/#search = ResizeObserver

Эта проблема была помечена как "Вопрос" и в последнее время не наблюдалась. Он был автоматически закрыт на хозяйственные нужды. Если вы все еще ждете ответа, вопросы обычно лучше подходят для stackoverflow .

Это должно снова открыться; Я считаю, что причина его закрытия сомнительна.

Предпосылка о том, что интерфейс для ResizeObserver API не добавляется, устарела и требует обновления.

/ cc @weswigham

@weswigham Есть поводу ?

По-прежнему отмечен как экспериментальный на mdn , поэтому нет. Когда спецификация перемещается из чернового состояния и принимается, связанный с ней IDL должен быть загружен TS и автоматически включен, но этого еще не произошло.

@weswigham MDN больше не считает этот API экспериментальным. В настоящее время появляется сообщение «Не удается найти имя ResizeObserver» при попытке использовать API с TypeScript 3.7.2.

Эту проблему следует открыть повторно, поскольку она больше не является экспериментальной и ее поддерживают все основные браузеры.

Согласно MDN, это все еще только часть проекта редактора, и не все основные браузеры его поддерживают.

Я полагаю, что задерживает Safari, который не будет поддерживать его, пока
2020 год входит в их дорожную карту на 2020 год; Поддержка Edge для него гарантирована
~ 15 января, когда Edge Chromium будет запущен для широкой публики с его
поддержка ResizeObserver.

В среду, 13 ноября 2019 г., в 01:00 Мартин Джонс [email protected]
написал:

Согласно MDN, это все еще только часть редакционного черновика, а не все
основные браузеры поддерживают его.

-
Вы получили это, потому что оставили комментарий.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/microsoft/TypeScript/issues/28502?email_source=notifications&email_token=AAJKUOAOKN35DZEYT26M6VLQTO6ZVA5CNFSM4GDOB24KYY3PNVWWK3TUL52HS4DVMVREXG5CNFSM4GDOB24KYY3PNVWWK3TUL52HS4DFMVREX5
или отписаться
https://github.com/notifications/unsubscribe-auth/AAJKUODKUSZ7BORN3AUGNKLQTO6ZVANCNFSM4GDOB24A
.

>

Кевин Лозандье
[email protected] [email protected]

Есть обновления здесь?

это одна из самых странных проблем, с которыми я столкнулся. я много слышал об этом API в прошлом году, чтобы он не был знаком с машинописным текстом

Почти 80% https://caniuse.com/#search = ResizeObserver

Пора добавить, он был отправлен в Safari в прошлом месяце. Это означает, что буквально все браузеры его поддерживают.

Вверх

@weswigham , создать проблему https://github.com/microsoft/TSJS-lib-generator/issues/908

Хотя типизация еще не объединена в машинописный текст, вы можете использовать пакет из npm с типами ResizeObserver: https://www.npmjs.com/package/@types/resize -observer-browser

Чтобы добавить к ответу @denexapp :

1) установите https://www.npmjs.com/package/@types/resize-observer-browser
2) /// <reference types="resize-observer-browser" /> вверху файла, где вам нужно его использовать.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги