@jedifa

Стоит ли явно определять тип переменной?

Подскажите пожалуйста, стоит ли явно определять тип переменной или нет? К примеру const a: number = 10;
Здесь я явно определил тип, но тайпскрипт ведь умеет сам это определять, так вот стоит ли определять самому или пусть тайпскрипт определяет сам? Есть ли вообще какие то отличия?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
В этом случае отличия будут только в наличии этой аннотации.

Я предпочитаю не ставить аннотацию, если ts сам может вывести тип, который мне нужен
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
Подскажите пожалуйста, стоит ли явно определять тип переменной или нет?
В большинстве случаев нет, лучше доверится выводу типов, он сделает это лучше.
const a: number = 10;
Есть ли вообще какие то отличия?
есть, так как ts знает, что const нельзя переприсвоить, а числа неизменяемый тип, он выведет тут литеральный тип 10, который без проблем можно передать как в number так и в union из литеральных типов содержащий в себе 10

Но надо понимать, что вывод типов работает только сверху вниз, и из-за этого есть случаи, когда без явной декларации не обойтись, например:
// где-то есть
type SomeObject = { /* ... */ };
function getSomeObject(): SomeObject { /* ... */ }

// без явной декларации будет выведен тип null
let v: SomeObject | null = null;
setTimeout(() => {
  // без явной декларации типа для v здесь будет ошибка
  v = getSomeObject();
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы