Я попытаюсь объяснить мою ситуацию на примере.
Допустим, у меня есть интерфейс:
interface EventListener<TArgs> {
listen: () => TArgs
}
Реализация:
class Foo implements EventListener<UserConnectedArgs>, EventListener<UserDisconnectedArgs> {
listen = (): UserConnectedArgs => {
// user connection detection logic
}
listen = (): UserDisconnectedArgs => {
// user disconnection detection logic
}
}
И использование:
const userConnectionListener: EventListener<UserConnectedArgs> = new Foo()
const userDisconnectionListener: EventListener<UserDisconnectedArgs> = new Foo()
Я получил бы ошибку "Duplicate identifier 'listen'".
Исправьте меня, если я ошибаюсь, но я полагаю (вообще говоря), что класс должен быть в состоянии реализовать один и тот же универсальный интерфейс c несколько раз с разными типами, поскольку он может реализовывать различное поведение для каждого аргумента типа.
Реализация одной и той же концепции в C#, кажется, работает так, как я намеревался работать, но я знаю, что C# более "осведомлен о типах" во время выполнения, чем Typescript (или JavaScript в этом отношении).
И поэтому я спрашиваю, как вы думаете, я должен go об этом?
Заранее спасибо!