Всегда избегайте any
. any
по определению присваивается чему угодно и присваивается из чего угодно без каких-либо утверждений типа. При использовании в качестве аргумента универсального типа возвращаемый тип (например, Promise<any>
) обычно может быть назначен любому другому экземпляру с любым другим аргументом типа в этой позиции (например, Promise<Bar>
).
Поскольку в машинописи 3.0 введено unknown
(подробнее см. здесь ), которое похоже на любое, в котором вы можете присвоить ему что-либо, оно не может быть назначено чему-либо другому без утверждения типа. Так что это ошибка:
let u: Promise<unknown>
let n: Promise<number> = u; // error
Вы могли бы также взглянуть на правила tslint no-unsafe-any
и no-any
, которые запрещают использование any
в проекте, в зависимости от того, как далеко вы хотите пойти с запретом any
, и, как я сказал в начале, я запретит его полностью и добавит исключения для тех немногих случаев, когда это абсолютно необходимо.