Создайте форму, используйте метод POST, отправьте форму - нет необходимости в iframe. Когда страница сервера ответит на запрос, напишите заголовок ответа для типа mime файла, и он представит диалог загрузки - я сделал это несколько раз.
Вы хотите, чтобы контент- тип приложения / загрузка - просто найдите, как обеспечить загрузку для любого языка, который вы используете.
Не уверен, является ли это единственной опцией, но одной из опций является использование вспомогательной функции, у которой есть универсальный параметр, который будет захватывать фактический тип передаваемой функции, но который также будет обеспечивать возвращаемый тип (c: number)=> number
.
function fn<T extends (...a: any[]) => (c: number) => number>(o: T) {
return o;
}
const createSum5 = fn(() => c => c + 5)
const createMultiplyN = fn((n: number) => c => n * c);
const createWordsSum = fn((word: string) => c => word.length + c);
Я не верю, что существует другая опция, так как машинопись не допускает частичного вывода для переменных (или, более конкретно, ограниченного вывода), это можно сделать только с помощью функции.
TypeScript поддерживает ключевое слово infer
, которое позволит вам сохранить типы аргументов и / или типы возвращаемых функций.
Для условных типов это выглядело бы так:
type ReturnType<T> = T extends (...args: any[]) => infer R ? R : any;
. Здесь есть некоторая информация об умении: https://www.typescriptlang.org/docs/handbook/ release-notes / typescript-2-8.html
Обновление:
Вы можете сделать это, просто воспользовавшись универсальной функцией:
[111 ]