Это не так:
const person = { name: 'Joe', age: 25 };
const foo = typeof person;
console.log(foo); // Prints: "object"
То, что вы видите, вероятно, тип из foo
, что в основном является всеми возможными возвращаемыми значениями typeof x
в JavaScript .
Это потому, что type personType = typeof person;
оценивается во время компиляции в TypeScript, но const foo = typeof person;
оценивается во время выполнения в JavaScript (см. typeof
документы в JavaScript). Это два разных typeof
s!
И это не псевдоним для any
, потому что тип, который вы видите, говорит, что это строка с одним из этих значений!
"string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"
- это тип выражения typeof something
JS.
(Однако это заставляет меня задаться вопросом, почему тип TS JS - typeof
не определяется условно на основе на вводе. Я считаю, что это должно быть возможно сделать в TypeScript, поэтому я не уверен, почему это еще не сделано.)