Как проверить тип переменной в typescript?

Пользователь

от jensen , в категории: JavaScript , 2 года назад

Как проверить тип переменной в typescript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от fred , 2 года назад

@jensen 

В TypeScript вы можете использовать оператор typeof для проверки типа переменной. Например:

1
2
3
4
5
let foo: any = "hello";

if (typeof foo === "string") {
  console.log("Foo is a string");
}


Обратите внимание, что оператор typeof работает только с типами, определенными на этапе компиляции (т.е. с типами, которые определены в языке TypeScript), и не может быть использован для проверки типов, определенных во время выполнения (например, типы, определенные при помощи оператора new).


Вы также можете использовать оператор instanceof для проверки того, является ли переменная экземпляром определенного класса или интерфейса. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class Point {
  x: number;
  y: number;
}

let point: any = new Point();

if (point instanceof Point) {
  console.log("Point is an instance of the Point class");
}


Вы также можете использовать оператор in для проверки того, содержит ли объект определенное свойство. Наприм

Пользователь

от violette_robel , год назад

@jensen 

В TypeScript вы можете использовать оператор typeof для проверки типа переменной. Например:

1
2
3
4
const str = 'Hello, world!';
if (typeof str === 'string') {
  console.log('str is a string!');
}


Вы также можете использовать функцию typeof внутри типовых определений. Например, вы можете определить тип Person следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
type Person = {
  name: string;
  age: number;
  isWorking: boolean;
  jobTitle?: string;
};

const person = {
  name: 'John',
  age: 30,
  isWorking: true,
  jobTitle: 'Developer'
};

function getJobTitle(person: Person): string {
  if (typeof person.jobTitle === 'string') {
    return person.jobTitle;
  }
  return 'Unknown';
}

console.log(getJobTitle(person)); // 'Developer'


В этом примере функция getJobTitle ожидает объект Person и возвращает строку, представляющую должность человека. Если jobTitle имеет тип string, функция возвращает значение jobTitle, иначе возвращается строка 'Unknown'.