Этот вопрос касается .d.ts
как объявлений для .js
файлов.
Я пытаюсь объявить функцию, у которой есть generi c внутри generi c, но я не могу кажется, понял это правильно. По сути, эта функция является Array#forEach
функцией для объектов ({[key: string]: E}
).
Я пробовал следующее, но intellisense VSCode, похоже, не понимает типы значений свойств объекта.
Файл для ввода:
export module Util {
export function forEach<K, T extends { [key: string]: K }>(obj: T, callbackfn: (value: K, key: string, object: T) => void): void;
}
JavaScript Вызов:
if (undefined) var { Util } = require("./globals");
/** @type {{ [key:string]: number }} */
var obj = {};
Util.forEach(obj, function (value, key, object) { });
Исходный код forEach
:
function forEach(obj, callbackfn) {
if (!(obj instanceof Object)) throw Error("Util.forEach called on non object");
for (var key in obj) callbackfn.call(obj, obj[key], key, obj);
}