В настоящее время TypeScript не поддерживает это.
Подробнее об этом можно узнать здесь: https://github.com/Microsoft/TypeScript/issues/23911
Это не простая задача.
Это потому, чтоTypeScript построен поверх JavaScript и не имеет разрешения интерфейса, как у других языков, таких как C #.
Чтобы дать вам базовую идею, представьте, что у вас есть два интерфейса X
и Y
, оба имеют одинаковый методно разные типы:
interface X { foo(i: string): string }
interface Y { foo(x: number): number }
При создании класса, который реализует оба этих интерфейса, вы не можете просто объединить интерфейсы, как показано ниже:
class K implements X, Y {
// error: this does not satisfy either interfaces.
foo(x: number | string): number | string {
return x
}
}
Для этого простого примера вам понадобитсяto:
class K implements X, Y {
foo(x: number): number
foo(x: string): string
foo(x: number | string): number | string {
return x
}
}
И даже это не идеально, потому что не требует, чтобы тип ввода совпадал с типом вывода.