【发布时间】:2020-06-29 18:51:06
【问题描述】:
这个问题是关于 .d.ts 作为 .js 文件的声明。
我正在尝试声明一个在泛型中具有泛型的函数,但我似乎无法正确处理。该函数本质上是一个用于对象 ({[key: string]: E}) 的 Array#forEach 函数。
我尝试了以下方法,但 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);
}
【问题讨论】:
标签: javascript visual-studio-code intellisense .d.ts