Вот еще один подход, который может немного смущать пользователя функции, потому что ошибка на входе props
. Но он гарантирует, что функция не может быть вызвана, если пересечение не работает.
A & B
в качестве возвращаемого типа всегда должен быть подклассом Props
, так что это не должно быть проблемой (и заставляет компилятор не жаловаться).
export const foo2 = <Props, A, B>(
props: A & B extends Props ? Props : never,
a: A,
b: B,
): A & B => ({ ...a, ...b });
const props = { x: 1, y: 1 };
foo2(props, { x: 1, z: 1 }, { y: 1 }); // Valid
foo2(props, { x: 1 }, {}); // Error
foo2(props, { x: 1, y: 1 }, {}); // Valid
foo2(props, {}, { x: 1, y: 1 }); // Valid
Spring Framework работает , хотя вы должны убедиться, что регистрация общего ресурса не называется commons-logging-1.1.1.jar (как было в соглашениях maven, Google предоставляет банку с тем же именем, и в результате возникают проблемы с загрузкой классов). Итак, Spring WebMVC подтвержден для работы - что увеличивает вероятность того, что его родной проект Spring Webflow будет работать - хотя я не могу сказать, что мне действительно нравится, когда Webflow 2 полностью отличается от Webflow 1.
Также Мне еще предстоит найти структуру, которая действительно включает в себя понятие «сохранения и продолжения» - пользователям часто нравится это делать,
Wicket работает на App Engine, вам просто нужно сделать несколько настроек для конфигурации .
Не используйте его по одной простой причине - блокировка поставщика.
Если вы не заботитесь о потере своих усилий и времени и, возможно, хотите, чтобы платформа просто играла тогда Я полагаю, что все в порядке, но для чего-нибудь серьезного держаться подальше.