https://www.typescriptlang.org/play?#code/MYewdgzgLgBAZiEMC8MDeAoG2YCMCGATgBQCU6AvgDRY4EBexADkfgLYBcM0hAlmAHNyaahgoYMUAJ5MApjABiiFDGlyQceIglr5AYXBRZAD1ipMOGMHwAbGwB4A0jBNGwAEwgwA1rKkbFRAA+Yl8pLkcqGBZCdi4ABVY2WSNCCHslEABtRwBdIKyABlzSLgAlFIBXQjAAFRlZDMQc-IBuMQk4SrBgKF5wGEqIWQBJKGI0K1sbGAouAzAjU2FabGs7YgAiAkJN0jEgA
Для функции bar параметр не нужен, для bar он нужен и его тип должен быть string
Т.е. я хочу, чтобы typescript позволял вызвать call только в двух вариантах: call("bar") или call("baz", "param") и никак иначе
Если просто указать param? в типе функции call, то появится возможность писать еще и call("bar", 1) или call("baz"), что приведет к ошибке в рантайме
- param: Parameters<Foo[K]>[0] + ...params: Parameters<Foo[K]>
А можно только часть параметров так описать? Например ...params: Parameters<Foo[K]>[1..2]? И что делать, если у call уже есть список опциональных парметров? То есть вот так: https://www.typescriptlang.org/play?#code/MYewdgzgLgBAZiEMC8MDeAoG2YCMCGATgBT4AOZAXDPmAJ4CU6AvgDRY4EBepF1tdVjDJF8AW2rRCASzABzJmjYZmGDFDpkApjABiiFDA3aQceIjXGdAYXBQtAD1ipMOGMHwAbTwB4A0jCO9mAAJhAwANZadKZ6iAB8xFF01H5CIoTi1AAKomJa9oQQPvogANp+ALrxZQCMlUIAdM0gZFDS4BD89GWVDNQASgUAroRgACqaWiWIFdUA3CpqcMNgwO3gMMMQWgCSUMRo7l6eMMzUtmD2Tooc2B7exABEBIRPDCpAA
Обсуждают сегодня