Слияние кода завершено, страница обновится автоматически
Спецификация гласит следующее: "Тип параметра на некоторой позиции в S1 является типовым параметром, а тип параметра на той же позиции в S2 — это любой ссылочный тип или типовой параметр". В соответствии с этим данный код должен выбрасывать ошибку CTE, так как два сигнатурных объявления являются перегрузочными эквивалентами.
class A<T> {
foo(x: T): void {
}
foo(x: number): void {
}
}
Ошибка CTE для второй сигнатуры
Используя данный пример кода.
В спецификации не указано, что должно произойти, если типовой параметр имеет ограничения. Наше мнение заключается в том, что мы должны учитывать эти ограничения, и если они запрещают использование другого ссылочного типа, то код должен компилироваться. Таким образом, этот пример должен компилироваться без ошибок:
class X {}
class A<T extends X> { // T не может быть number
foo(x: T): void {
}
foo(x: number): void {
}
}
Вход Перед тем как оставить комментарий