У мене є змінна.
abc:number|string;
Як я можу перевірити його тип? Я хочу зробити щось на кшталт нижче:
if (abc.type === "number") {
// do something
}
У мене є змінна.
abc:number|string;
Як я можу перевірити його тип? Я хочу зробити щось на кшталт нижче:
if (abc.type === "number") {
// do something
}
Відповіді:
Для:
abc:number|string;
Використовуйте оператор JavaScripttypeof :
if (typeof abc === "number") {
// do something
}
TypeScript розуміє typeof🌹
Це називається типовою охороною.
Для класів ви б використовували, instanceofнаприклад
class Foo {}
class Bar {}
// Later
if (fooOrBar instanceof Foo){
// TypeScript now knows that `fooOrBar` is `Foo`
}
Існують також інші типи охорони, наприклад, inтощо. Https://basarat.gitbooks.io/typescript/content/docs/types/typeGuard.html
Я хотів би додати, що TypeGuards працює лише на рядках або числах, якщо ви хочете порівняти об'єкт використання instanceof
if(task.id instanceof UUID) {
//foo
}
classes, але не з TypeScript interfaces або types, оскільки вони не існують у експортованому файлі JavaScript.
Я перевірив змінну, якщо вона булева чи ні, як показано нижче
console.log(isBoolean(this.myVariable));
Так само і у нас
isNumber(this.myVariable);
isString(this.myvariable);
і так далі.
instanceof
utilдля доступу до цих функцій (наприклад,import { isString } from 'util';
Інші відповіді вірні, але коли ви маєте справу з інтерфейсами, ви не можете використовувати typeof або instanceof, оскільки інтерфейси не компілюються в JavaScript.
Натомість ви можете використовувати typecast + функцію перевірки typeguard для перевірки змінної:
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();
}
}
І це складений JavaScript у ES2017:
function start(vehicle) {
vehicle.drive();
if (vehicle.ringTheBell) {
const bike = vehicle;
bike.ringTheBell();
}
else {
const car = vehicle;
car.honkTheHorn();
}
}
instanceofхоча це не було задане питання.