Что такое "синтаксис as", на который указывает tslint?
Я обновил tslint и теперь он жалуется на:
ERROR: src/Metronome/JobFetcher.ts[13, 32]: Type assertion using the '<>' syntax is forbidden. Use the 'as' syntax instead.
Оскорбительный код выглядит следующим образом:
const jobs = <JobConfig[]> <any> await rp(fetchJobsOptions);
Что такое синтаксис as, хотя и почему я должен его использовать?
1 ответ:
Рефакторить ваш код таким образом:
const jobs = await rp(fetchJobsOptions) as JobConfig[];
Как указано в книге TypeScript Deep Dive Book by Basarat Ali Syed , в ней говорится о приведении типов:
Как foo против
<foo>
Первоначально был добавлен синтаксис
<foo>
. Это продемонстрировано ниже:var foo: any; var bar = <string> foo; // bar is now of type "string"
Однако при использовании{[6] в грамматике языка возникает двусмысленность]}
<foo> style assertions in JSX: var foo = <string>bar; </string>
Поэтому теперь рекомендуется просто использовать как foo для консистенция.
Утверждение типа против приведения
Причина, по которой это не называется "приведением типов", заключается в том, что приведение обычно подразумевает некоторую поддержку во время выполнения. Однако тип утверждения-это чисто конструкция времени компиляции и способ для вас предоставьте компилятору подсказки о том, каким должен быть ваш код. проанализированный.