Вам придется сделать это, к сожалению, разрушая (или к счастью?)
type Props = {
icon: number,
onChangeText: Function,
onEndEditing: Function,
placeholder: string,
secureTextEntry?: boolean
};
function LRInput(
{ secureTextEntry = false, ...props }: Props
) { console.log(secureTextEntry) }
LRInput({ icon: 5 })
LRInput({ icon: 5, secureTextEntry: true })
Редактировать
Чтобы решить вашу проблему со значением по умолчанию после остальных подпорок, проблема не в том, что для машинописного текста задано целевое значение es5, поскольку синтаксис оставшейся части перенесен в нечто вроде ниже,
function LRInput(_a) {
var _b = _a.secureTextEntry;
var secureTextEntry = _b === void 0 ? false : _b;
/* code to handle rest omitted */
console.log(secureTextEntry);
}
Как видите, с приведенным выше преобразованием порядок распространения не имеет значения, и в результате мой фрагмент кода ведет себя правильно. Однако, поскольку нет логического смысла захватывать «остальные» клавиш раньше других, стандарт ES2018 и Typescript требуют, чтобы вы поместили его за деструктурированными ключами { secureTextEntry = false, ...rest }
.
(Я пропустил это в первый раз, потому что я скопировал отредактированный твой код, и он работал нормально, поскольку компилятор машинописного текста на этом сайте настроен на испускание, даже если он обнаруживает «ошибки компиляции» и поскольку я фактически не использовал ...props
внутри функции я не осознавал, что преобразование параметра rest не работает должным образом. Вы должны увидеть в действии сами.)