Type Manipulation, operador typeof Type Manipulation, operador typeof

🥇 Type Manipulation, operador typeof

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.

Type Manipulation, operador keyof Type Manipulation, IAT, Indexed Access Types (tipos basados en índices)
comments powered by Disqus