#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
оператор, просто напрасно сбивают с толку новичков, поскольку это приводит к тому, что их двое, которые делают разные вещи.