Switch по Generic type

Мой код:

interface A {
  name: string;
}

interface B {
  name: string;
}

function foo<T>(): string {
  if (T === A) return 'A';
  else return 'B';
}

const result = foo<A>();
console.log(result); // 'A'

Как, в зависимости от интерфейса, передаваемого в метод/функцию, делать то или иное действие?


Ответы (1 шт):

Автор решения: Qwertiy

Невозможно. Информация о типах есть только во время компиляции.

Если тип T является классом, то можно явно передавать его конструктор в функцию.

Если передаётся объект данного типа, то можно написать функцию, которая отличает один тип от другого и в if вызвать её.

→ Ссылка