问题标签 [index-signature]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
33 浏览

typescript - 将索引签名添加到 .d.ts 中的函数

我想覆盖 npm 库类型以向函数添加索引签名。假设该函数没有做任何壮观的事情:

它有一个输入.d.ts文件:

我想为这个函数添加属性,比如:

如何更改.d.ts文件,以便我不仅可以使用任何属性执行此操作something吗?它的索引签名应该是[index: string]: number;. 我已经找到了如何做到这一点的答案,但仅限于单个或几个已知属性,但我需要将任何字符串作为键。

0 投票
1 回答
27 浏览

typescript - 键是字符串 vs [字符串] 的索引签名

这两者有什么区别?

world对于两个值,我得到相同的结果 ( )

0 投票
1 回答
57 浏览

typescript - 具有来自传递类型的索引签名的打字稿类

我是打字稿的新手,我正在尝试正确定义一个类,将某种类型的对象转换为具有相同属性的类。但是,我无法正确定义此类上的键,因为它们是通用的:

我希望TrackedAnswer该类具有与本例相同的索引签名RawAnswer。有人可以帮我吗?

0 投票
1 回答
66 浏览

typescript - 如何指定必须具有至少两个特定类型属性的接口

这是用于选择框的选项。每个选项都必须有一个用作 id 的字符串属性,以及另一个表示将要显示的内容的属性——在这种情况下 a ReactNode,但是,我不在乎这些被称为什么,只是有两个属性满足这个标准。我尝试了以下方法:

但是,当我尝试此 Typescript 时会产生以下错误:Duplicate index signature for type 'string'.

这不会产生错误:

但过于宽松,因为它会匹配一个只有一个属性的对象(而且也是多余的,因为 ReactNode 包含字符串)。

有没有办法为两个未命名的属性指定类型?

0 投票
2 回答
18 浏览

typescript - 约束索引签名(使用泛型)以使子属性具有匹配的类型

在 TypeScript (v4.5.4) 中,我试图通过索引签名来定义对象类型。我希望 TypeScript 强制对象中的某些子属性具有匹配的类型,但这些类型允许在顶级属性之间变化。

在下面的(非工作)示例中,我希望所有快乐的司机驾驶他们最喜欢的汽车类型。驾驶员最喜欢的汽车类型与其汽车的实际类型不匹配会导致 TypeScript 编译器错误。

我已经尝试以我能想到的所有方式将泛型应用于索引签名和/或Carand/orDriver类型,但我无法让编译器强制执行驱动程序必须与其'sfavoriteCarType完全匹配的约束。carcarType

你能帮我吗?

0 投票
1 回答
26 浏览

javascript - 使用必需的 AND 可选键在 Typescript 中创建索引签名

我试图找到一种更优雅的解决方案来创建一种类型,该类型允许其索引签名的某些键是可选的。

这可能是泛型的一个用例,但我似乎无法破解它。

目前构建它是这样的:

0 投票
0 回答
18 浏览

javascript - 使用 JSDoc 在 ES6 类上设置索引签名

在 Typescript 中,您只需这样做:

它允许您像这样访问计算的属性名称......

...没有收到Element implicitly has an 'any' type because type 'Test' has no index signature.

我不知道如何用 JSDoc 完成等效操作。有人对此有任何运气吗?

0 投票
1 回答
23 浏览

typescript - 带有对象数组的 Typescript 的索引签名

我已经使用 Typescript 几个月了,但一直坚持让我的索引签名正常工作。

对象数组如下所示:{ temperature: number; humidity: number; pressure: number; altitude: number; gas: number; timestamp: string; }

我尝试了多种不同的方法来添加 [metric: string]: any 并且如果不使用“any”似乎无法到达任何地方。

这是我在对象数组中使用的函数示例: