Mam scenariusz, gdzie mam interfejs, który ma metodę tak:maszynopis - domyślne parametry w klasie z interfejsem
interface SomeInterface
{
SomeMethod(arg1: string, arg2: string, arg3: boolean);
}
oraz klasę tak:
class SomeImplementation implements SomeInterface
{
public SomeMethod(arg1: string, arg2: string, arg3: boolean = true){...}
}
Teraz problem czy nie mogę powiedzieć interfejsowi, że trzecia opcja powinna być opcjonalna lub mieć wartość domyślną, tak jakbym próbowała powiedzieć interfejsowi, że istnieje domyślna wartość. Otrzymuję błąd:
TS2174: Default arguments are not allowed in an overload parameter.
Jeśli pominąć domyślne z interfejsu i wywołuje go tak:
var myObject = new SomeImplementation();
myObject.SomeMethod("foo", "bar");
Zarzuca, że parametry nie znaleziono żadnych nadpisanie. Więc istnieje sposób, aby móc mieć domyślne wartości parametrów i dziedziczyć z interfejsu, nie mam nic przeciwko, jeśli interfejs musi mieć również wartość domyślną, ponieważ zawsze będzie opcjonalnym argumentem.
oh Myślałem, że ten został usunięty na rzecz wartości domyślnej w jednej z ostatnich wersji. Czy jestem w stanie użyć opcjonalnego argumentu w interfejsie i argumentu wartości domyślnej w klasie? – Grofit
Możesz nadal używać opcjonalnych argumentów bez ustawień domyślnych w dowolnym miejscu. Jedyną niedozwoloną rzeczą jest zbędna składnia 'x? = 4' - możesz mieć wartość'? 'Lub wartość domyślną. –
I uwaga, jeśli wywołasz 'SomeMethod ('foo', 'bar')' parametr 'arg3' będzie miał wartość' undefined', a nie 'null'. – vegemite4me