JavaScript tiene ya incluido el operador typeof
.
console.log(typeof "Hola Mundo"); // -> string
TypeScript agrega al operador typeof
mayor contexto para asignar un tipo a una variable o propiedad.
let s = "hola mundo";
let n: typeof s; // <- ahora n es tipo string
Esto no es muy útil para tipos básicos, pero combinado con otros operadores, se puede utilizar typeof
para expresar distintos patrones. Por ejemplo, el tipo ReturnType
utiliza internamente typeof
para asignar el tipo que retorna una función.
type P = (c: unknown) => boolean;
type K = ReturnType<P>; // <- el tipo de K es boolean
Si intentamos utilizar ReturnType
usando el nombre de una función el compilador generará un error.
function H() {
return "hola mundo";
}
type F = ReturnType<H>; // <- esto no esta permitido
Limitaciones
TypeScript limita intencionalmente los tipos de expresiones que se pueden utilizar con typeof
.
Específicamente, solo se permite utilizar typeof
en identificadores (por ejemplo nombres de variables) en sus propiedades. Esto evite confusiones al momento de escribir el código.