Как заблокировать неявное приведение из `any` в более сильный тип - PullRequest
0 голосов
/ 06 января 2019

TypeScript позволяет неявно приводить от any к более сильному типу. Учитывая, что десериализованный JSON имеет тип any, такое поведение допускает множество ошибок типов и прерывает типизацию.

Какие опции компилятора или линтинга я могу использовать для неявного приведения типа any к более сильному типу?

Repro Эта операция должна быть помечена, чтобы разрешить приведение с any на более сильный тип.

const o = JSON.parse("");
const s: string = o.twinlakes;

1 Ответ

0 голосов
/ 06 января 2019

Если вы еще этого не сделали, попробуйте включить флаг компилятора TypeScript --noImplicitAny, чтобы объявления не могли случайно забыть пометить типы вещей, которые не могут быть выведены. Это остановит код, такой как let data; или function takesData(data) { /* ... */ }, от того, чтобы их data переменные "неявно" имели тип any.

Кроме того, есть пара правил TSLint , которые помогают здесь:

  • no-any: запрещает использование any в качестве объявления типа. Используйте это, чтобы запретить объявлениям включать в них any, например, let data: any = {/*...*/}.
  • no-unsafe-any: запрещает случайно использовать any небезопасным способом. Это отличается от no-any тем, что вы все еще можете использовать типы any, не зная этого: например, let data = JSON.parse("{}");.
...