Tengo una variable.
abc:number|string;
¿Cómo puedo comprobar su tipo? Quiero hacer algo como a continuación:
if (abc.type === "number") {
// do something
}
Tengo una variable.
abc:number|string;
¿Cómo puedo comprobar su tipo? Quiero hacer algo como a continuación:
if (abc.type === "number") {
// do something
}
Respuestas:
Por :
abc:number|string;
Utilice el operador de JavaScripttypeof :
if (typeof abc === "number") {
// do something
}
TypeScript entiende typeof🌹
Esto se llama typeguard.
Para las clases, usaría, instanceofpor ejemplo,
class Foo {}
class Bar {}
// Later
if (fooOrBar instanceof Foo){
// TypeScript now knows that `fooOrBar` is `Foo`
}
También hay otros tipos de guardias, por ejemplo, inetc. https://basarat.gitbooks.io/typescript/content/docs/types/typeGuard.html
Me gustaría agregar que TypeGuards solo funciona con cadenas o números, si desea comparar un objeto use instanceof
if(task.id instanceof UUID) {
//foo
}
classes pero no con TypeScript interfaces o types, porque no existen en el archivo JavaScript exportado.
He verificado una variable si es booleana o no como se muestra a continuación
console.log(isBoolean(this.myVariable));
Similarmente tenemos
isNumber(this.myVariable);
isString(this.myvariable);
y así.
instanceof
utilpara acceder a estas funciones (por ejemplo,import { isString } from 'util';
Las otras respuestas son correctas, pero cuando se trata de interfaces, no puede usar typeof o instanceof porque las interfaces no se compilan en javascript.
En su lugar, puede usar una función typecast + check typeguard para verificar su variable:
interface Car {
drive(): void;
honkTheHorn(): void;
}
interface Bike {
drive(): void;
ringTheBell(): void;
}
function start(vehicle: Bike | Car ) {
vehicle.drive();
// typecast and check if the function exists
if ((<Bike>vehicle).ringTheBell) {
const bike = (<Bike>vehicle);
bike.ringTheBell();
} else {
const car = (<Car>vehicle);
car.honkTheHorn();
}
}
Y este es el JavaScript compilado en ES2017:
function start(vehicle) {
vehicle.drive();
if (vehicle.ringTheBell) {
const bike = vehicle;
bike.ringTheBell();
}
else {
const car = vehicle;
car.honkTheHorn();
}
}
instanceofaunque esa no era la pregunta formulada