Очень новичок в TypeScript, поэтому я уверен, что с моим кодом что-то не так.
let htmlOption: HTMLCollection = document.getElementsByClassName(OPTION_SELECTOR);
let selected: HTMLElement = htmlOption[index];
// this throws an error "Initializer type Element is not assignable to variable type HTMLElement
selected.focus();
Я почти уверен, что это связано с тем фактом, что дети HTMLCollection
- это Element
, а не HTMLElement
. Но мне нужно было установить фокус на HTMLElement
(что не разрешено на Element
)
Но следующее не выдает никаких ошибок:
let htmlOption = (document.getElementsByClassName(OPTION_SELECTOR) as HTMLCollection);
let selected = (htmlOption[index] as HTMLElement);
selected.focus();
Я не понимаю, чем они отличаются. Я думал, что могу объявить переменные с помощью varName: type = Definition?
varName: type
говорит о том, что вы намерены поместить значение типаtype
вvarName
. Если вы этого не сделаете, компилятор должен пожаловаться. Использованиеexpression as type
означает, что результатомexpression
являетсяtype
. - person Heretic Monkey   schedule 17.07.2017HTMLElement
иElement
(из вопроса: Но мне нужно было сфокусироваться наHTMLElement
(что не разрешено наElement
) я>). Этот вопрос касался ввода информации, которую TypeScript добавляет к изображению. - person Heretic Monkey   schedule 17.07.2017let htmlOption: string = 'Select an Option'
выражение как типlet htmlOption = (document.getElementsByClassName(OPTION_SELECTOR) as HTMLCollection)
? и спасибо @ Steveland83, но я уже понимаю, что вы упомянули. - person codeNameLily   schedule 17.07.2017htmlOption
всегда содержитstring
. Последнее заставитhtmlOption
содержатьHTMLCollection
. Вы можете заменить его наlet htmlOption: HTMLCollection = document.getElementsByClassName(OPTION_SELECTOR) as HTMLCollection;
или даже наlet htmlOption = <HTMLCollection>document.getElementsByClassName(OPTION_SELECTOR);
. Во всех трех случаях вы сообщаете компилятору, что результатомgetElementsByClassName
являетсяHTMLCollection
. - person Heretic Monkey   schedule 17.07.2017getElementsByClassName
. Думаю, теперь я понял. Спасибо еще раз! - person codeNameLily   schedule 17.07.2017