问题标签 [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 回答
274 浏览

string - 打字稿:如何在接口中的字符串索引签名定义中引用属性名称

插图

问题

根据插图为接口提供字符串索引签名!如下:

我们如何eventName在我的示例中引用?或索引属性名称!同一行

在我的确切代码中,我想这样做:

这将产生很大的亲和力!反正?

为了更好地清除,我将在下面使用此代码段!

在该示例中,我能够使用this关键字引用相同的接口!这允许伟大的类型亲和力!它允许很好的打字精度!

从索引签名中引用和获取同一行的属性名称怎么样?

更新

我注意到我刚刚遇到了

索引签名参数类型必须是 'string' 或 'number'.ts(1023)`

错误!

我将代码更改为

我会问这个问题吗?

0 投票
1 回答
739 浏览

typescript - 如何在 TypeScript 中键入具有索引签名和动态变量的对象?

我是 TypeScript 的新手,并尝试了各种方法来键入它,但遇到了索引签名的问题。界面应该是什么样的?

0 投票
1 回答
535 浏览

sql-server - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“类型”

我正在尝试修剪从 REST API 返回的对象数组中的值。

这是interface我期待的对象。

我正在尝试遍历对象数组并修剪对象的所有值。

我收到以下错误。

我尝试向对象添加索引签名,但没有运气。[key: string]: string还有key: {[index: string]: string}

有什么我遗漏的吗,我认为这足以让 TS 编译器停止抱怨。

这是对象的参考。

非常感谢

0 投票
2 回答
341 浏览

reactjs - TypeScript/React 中的枚举索引签名

我似乎无法弄清楚如何在这里正确输入索引签名。我有一个枚举,需要遍历它以将一些 JSX 放在屏幕上。我可以猜到它在告诉我什么,但我无法在我的代码中解决它。这两种Category[el]说法都有问题。

我渲染一些 JSX 的简化函数是:

TS告诉我:

0 投票
0 回答
32 浏览

typescript - TypeScript 中索引类型的严格值检查

我想知道是否有可能有一个索引类型,如果定义了一个键,那么对象也被定义了,但键本身不一定是设置的。例子:

操场

操场

问题在于,它Object.values还将考虑Cars对象值的可选性。

我认为该Map对象可以按我想要的方式工作和输入,但是使用 setter 和 getter 会产生语法开销。

这可能更像是一种语言请求,但作为额外的好处,如果在这种情况下类型被推断为不是可选的未定义,那就太棒了:

0 投票
2 回答
61 浏览

typescript - 强键入 Twitter 小部件以摆脱成员访问错误

我很难输入我的 Twitter 小部件。

目前,它给我带来了一堆错误,包括:

我想通过为 twi 创建一个界面来解决这个问题,但我不确定那会是什么样子。

到目前为止,我已经尝试了以下方法:

但我得到了错误TS2411: Property 'widgets' of type '{ createTweet: unknown; }' is not assignable to string index type '

0 投票
2 回答
28 浏览

javascript - 为什么打字稿在这里抛出一个索引签名错误?

在函数中getName,我遍历类的静态属性UnitGroups。该函数应返回适合传递值的属性标识符。例如UnitGroups.getName(1)应该返回"Speed"

我的代码工作得很好,但打字稿抛出以下错误(悬停时出现UnitGroups[property]):

我不明白错误和错误消息......

0 投票
1 回答
104 浏览

javascript - 在 TypeScript 中使用索引签名时如何将值类型与键匹配?

我在库中有一个代码用于进行某种事件溯源。它为每种事件定义了具有给定类型和数据的事件。

我想编写一个 reduce 函数来遍历事件列表并将它们应用于给定的初始值。

我的问题是如何定义 reducer 函数eventData参数的类型以匹配当前键?我的目标是让 TypeScript 根据对象键推断参数类型,这样我就不必对事件数据参数进行类型转换(即:)(eventData as AddEvent['data'])

简而言之:目前该wrongReducer对象会导致 TypeScript 错误,但我想定义Reducer类型以使其以这种方式工作。

是否有任何 TypeScript 魔法可以实现这一目标?

0 投票
1 回答
53 浏览

typescript - 为什么对象类型的索引签名接受没有属性的对象?

我有一个字典接口,我希望索引类型为字符串,值为字符串类型。

如果我将此类型注释为一个包含没有属性的对象的常量变量,那么它不会给我一个错误。

上述方法的另一个问题是const example = {} as One;这也有效。

如果我不提供对象的索引签名,那么它会给我一个错误,即您缺少属性。

我的问题是为什么example变量接受没有属性的对象?

你可能有一个问题,为什么我想要一个没有属性的对象。原因是我想稍后向那个空对象添加一些属性。在那种情况下,我应该做类型断言还是类型注释?

0 投票
1 回答
67 浏览

reactjs - 使用带有字典类型的 Typescript/React 的文本输入的通用更改处理程序

我发现了这个使用单个更改函数来处理 React 和 Typescript 的多个文本输入和状态更改的聪明示例。该示例自然使用普通字符串类型:

但是,我的字符串类型是字典。例如:

...其中索引是语言代码字符串,其对应的值是该语言内容的字符串。例如,名称对象看起来像,name:{'en': 'Michael', 'es': 'Miguel'}

这是我当前希望为所有文本字段工作的特定于字段的更改处理程序。注意- selectedLanguage是一个字符串状态变量,带有用户选择的语言代码,为简洁起见省略。请参阅下面的代码框链接以获取完整版本):

这是我尝试使用与我找到的示例类似的方法。

TS 在代码行上给了我错误,“ Spread types may only be created from object types.ts(2968) ”: ...prevData[fieldName]

但是 prevData 是一个对象,并且在特定于字段的版本中它可以工作。如何让这个更通用的函数与我的字典类型 StringLanguage 一起使用?:

这是文本输入的用法:

最后,这是一个包含我正在做的完整示例的代码框。随意注释掉代码进行实验。我已将有效的版本保持为活动状态,并从上面注释掉了无效的内容:

例子