Возвращает ли typescript тип переменной только тогда, когда ей присваивается некоторое значение после объявления типа?

#javascript #typescript #typescript-typings

#javascript #typescript #typescript-typings

Вопрос:

Возможно ли в type script получить тип переменной, прежде чем присваивать ей какое-либо значение?

 let a: number;
console.log(typeof a);
  

ВОЗВРАТ undefined

где как

 let a: number;
a = 10;
console.log(typeof a);
  

ВОЗВРАТ number

Комментарии:

1. Typescript не существует после его переноса в javascript. Это просто для того, чтобы помочь вам понять, что это за материал.

2. Нет, это невозможно. Система типов существует во время компиляции , когда код выполняется во время выполнения системы типов, а весь TypeScript отсутствует. У вас есть только JavaScript. typeof a даст вам только тип JS, а не TS — например, let a: {foo: number} = {foo: 42}; typeof a будет печатать object , поскольку это то, о чем знает JS.

3. Есть ли какая-либо причина, по которой вам нужно использовать typeof здесь? В конце концов, вы уже заранее знаете, что это a будет число.

4. Как объясняется в двух комментариях выше, typescript помогает вам только во время компиляции. Когда javascript фактически выполняется в браузере, он не знает о указанных вами типах.

5. Вы не знаете, чего вы не знаете. Это серьезный вопрос. Теперь вы знаете, 🙂

Ответ №1:

Нет.

Типы стираются в TypeScript. Они не существуют во время выполнения.

Фактически, TypeScript вообще не имеет семантики времени выполнения. TypeScript не может изменить результат кода по сравнению с тем, каким был бы результат в обычном ECMAScript.

То, что вы используете в своем фрагменте кода, — это оператор ECMAScript typeof , он не имеет ничего общего с TypeScript и ничего не знает о TypeScript.

Комментарии:

1. «То, что вы используете в своем фрагменте кода, — это оператор ECMAScript typeof , он не имеет ничего общего с TypeScript и ничего не знает о TypeScript». Я чувствую, что TS, имеющие свой собственный typeof оператор, просто напрасно сбивают с толку новичков, поскольку это приводит к тому, что их двое, которые делают разные вещи.