Ошибка машинописного текста: свойство «добавлять» не существует для типа «HTMLElement»

Проблема:

Я получаю сообщение об ошибке компиляции Typescript 2.2.1 при попытке добавить скомпилированный шаблон angular 1.5 к существующему файлу HTMLElement.

Код:

$document.find(scope.target)[0].append($compile(menu)(scope)[0]);

Ошибка компиляции:

[ts] Property 'append' does not exist on type 'HTMLElement'

Я просмотрел определения типов и не нашел подписи для append().

Любые идеи относительно того, какой тип или версию машинописного текста я должен использовать?

Спасибо!


person Zengineer    schedule 21.06.2017    source источник
comment
Вы пробовали appendChild? append является экспериментальным и не во всех браузерах.   -  person Andrew Li    schedule 22.06.2017
comment
@AndrewLi Нет, еще нет. Я конвертирую существующий рабочий код .js в машинописный текст. Итак, я надеялся, что мне не придется менять какие-либо внутренние компоненты и я смогу просто создать контейнер машинописного текста.   -  person Zengineer    schedule 26.06.2017


Ответы (3)


Здесь нет ничего общего с TypeScript.

Правильный метод вызова — appendChild:

https://developer.mozilla.org/en/docs/Web/API/Node/appendChild

append - это метод jQuery, и если вы хотите использовать его, вы можете сделать:

$document.find(scope.target).append($compile(menu)(scope)[0]);

и это тоже должно работать.

Я надеюсь, что это помогает

person quirimmo    schedule 21.06.2017

В HTMLElement есть функция добавления/вставки. Проблема в том, что он в настоящее время все еще является экспериментальным.

Чтобы использовать его без ошибок от TypeScript, я использовал его как любой ¯\_(ツ)_/¯ (<any>myElement).append(otherElement)

person gmadar    schedule 12.04.2018
comment
Это хорошее решение. Лучший синтаксис: (myElement as any).append(otherElement) - person Tallerlei; 10.05.2019

Element.append() теперь существует (с 2016 г. ). Если TypeScript находит ошибку:

  • Типы: убедитесь, что это Element, а не только Node
  • Конфигурация: убедитесь, что вы загружаете библиотеку DOM
  • Конфигурация: убедитесь, что вы используете недавнюю цель/библиотеку ES

Пример конфига:

{
  "compilerOptions": {
    "target": "es2020",
    "lib": ["dom", "es2019", "es2020", "dom.iterable"]
  }
}
person fregante    schedule 24.06.2021