Я экспериментирую с машинописным текстом и пытаюсь создать функцию using(...)
, которая в основном является IIFE, но с аргументами первыми, а не последними.
var someValue = (function (p0, p1) {
// p0 is someGlobal
// p1 is someOtherGlobal
// do stuff with in scope
return /*something*/;
}(someGlobal, someOtherGlobal));
Выше приведен общий IIFE с возвращаемым значением. Опять же, я просто экспериментирую здесь, но я думаю, что это было бы более читабельно, если бы сначала аргументы IIFE, а затем функция, например.
const someValue = using([someGlobal, someOtherGlobal], /*as*/ (p0, p1) => {
// p0 is someGlobal p1 is someOtherGlobal
// do stuff
return /*something*/;
});
И эта функция using(...)
кажется несложной в написании, но теперь у меня возникли проблемы с вводом этой функции для intellisense в коде VS.
Вот что я придумал до сих пор:
function using<A, B, C, D, E, F>(
params: A | [A, B] | [A, B, C] | [A, B, C, D] | [A, B, C, D, E, F],
func: (p0: A, p1: B, p2: C, p3: D, p4: E, p5: F) => any
) {
return func(
params[0],
params[1],
params[2],
params[3],
params[4],
params[5]
);
}
Эта функция правильно вводит параметры func
, но не вводит возвращаемое значение. Итак, в этом примере:
const someValue = 42;
const someNum = using(someValue, num => num + 1);
num
правильно набирается как number
, но someNum
набирается как any
.
Я думаю, может быть, потому что я ввел тип возврата от func
до => any
.
Итак, вот вопрос:
Как мне получить код vs, чтобы узнать тип someNum
?