首页 > 解决方案 > 如何在 TypeScript 中为 Object.entries 函数添加重载

问题描述

我有一个自定义类型,SpecialRecord<K,V>并想定义它Object.entries的行为方式。这类似于在某处如何定义类型的Object.entries行为方式Record

我尝试在全局 .d.ts 文件中重载该方法,但它似乎没有采用这个定义。另外,我想扩展定义,而不是完全覆盖它。

interface Object {
    entries<K, V>(obj: SpecialRecord<K,V>): [K,V][]
}

如果我改为调用它xentries然后使用xentries它通过输入。这表明文件正在被加载(当然这在运行时会失败)。

如何正确地向 Object.entries 添加其他类型?

标签: typescript

解决方案


entries()在 ObjectConstrutor 中定义,因此您可以执行以下操作:

interface MyInt {
  foo: string;
}

interface ObjectConstructor {
  entries(obj: MyInt): ['foo', string];
}

const myobj: MyInt = {foo: 'a'};
const t = Object.entries(myobj);

推荐阅读