В чем проблема Typescript с document.getElementbyID? - PullRequest
0 голосов
/ 24 апреля 2018

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

Я пытаюсь получить содержимое Textarea в виде строки (для использования с NW.JS-файл работает так же, как я пишу приложение, которое работает с плоскими файлами), и для этого я использую следующий код:

let file = document.getElementById("txt").value;

Он прекрасно работает после компиляции в JS.Однако компилятор TypeScript жалуется на часть значения:

Property 'value' does not exist on type 'HTMLElement'

Что я делаю не так?

1 Ответ

0 голосов
/ 24 апреля 2018

Смысл TypeScript в том, чтобы применять статическую типизацию к JavaScript-подобному коду.document.getElementById возвращает HTMLElement, у которого нет value (в конце концов, это может быть любой элемент HTML), поэтому TypeScript предупреждает вас, что вы используете свойство, которого HTMLElement не имеет.TypeScript не может знать, что конкретный элемент, который вы получаете, является HTMLInputElement (который имеет value), если вы не скажете, что это происходит посредством приведения (технически, утверждение типа * ):

let file = (document.getElementById("txt") as HTMLInputElement).value;
// or
let file = (<HTMLInputElement>document.getElementById("txt")).value;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...