问题标签 [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.
string - 打字稿:如何在接口中的字符串索引签名定义中引用属性名称
插图
问题
根据插图为接口提供字符串索引签名!如下:
我们如何eventName
在我的示例中引用?或索引属性名称!同一行
在我的确切代码中,我想这样做:
这将产生很大的亲和力!反正?
为了更好地清除,我将在下面使用此代码段!
在该示例中,我能够使用this
关键字引用相同的接口!这允许伟大的类型亲和力!它允许很好的打字精度!
从索引签名中引用和获取同一行的属性名称怎么样?
更新
我注意到我刚刚遇到了
索引签名参数类型必须是 'string' 或 'number'.ts(1023)`
错误!
我将代码更改为
我会问这个问题吗?
typescript - 如何在 TypeScript 中键入具有索引签名和动态变量的对象?
我是 TypeScript 的新手,并尝试了各种方法来键入它,但遇到了索引签名的问题。界面应该是什么样的?
sql-server - 元素隐式具有“任何”类型,因为“字符串”类型的表达式不能用于索引类型“类型”
我正在尝试修剪从 REST API 返回的对象数组中的值。
这是interface
我期待的对象。
我正在尝试遍历对象数组并修剪对象的所有值。
我收到以下错误。
我尝试向对象添加索引签名,但没有运气。[key: string]: string
还有key: {[index: string]: string}
。
有什么我遗漏的吗,我认为这足以让 TS 编译器停止抱怨。
这是对象的参考。
非常感谢
reactjs - TypeScript/React 中的枚举索引签名
我似乎无法弄清楚如何在这里正确输入索引签名。我有一个枚举,需要遍历它以将一些 JSX 放在屏幕上。我可以猜到它在告诉我什么,但我无法在我的代码中解决它。这两种Category[el]
说法都有问题。
我渲染一些 JSX 的简化函数是:
TS告诉我:
typescript - 强键入 Twitter 小部件以摆脱成员访问错误
我很难输入我的 Twitter 小部件。
目前,它给我带来了一堆错误,包括:
我想通过为 twi 创建一个界面来解决这个问题,但我不确定那会是什么样子。
到目前为止,我已经尝试了以下方法:
但我得到了错误TS2411: Property 'widgets' of type '{ createTweet: unknown; }' is not assignable to string index type '
。
javascript - 为什么打字稿在这里抛出一个索引签名错误?
在函数中getName
,我遍历类的静态属性UnitGroups
。该函数应返回适合传递值的属性标识符。例如UnitGroups.getName(1)
应该返回"Speed"
。
我的代码工作得很好,但打字稿抛出以下错误(悬停时出现UnitGroups[property]
):
我不明白错误和错误消息......
javascript - 在 TypeScript 中使用索引签名时如何将值类型与键匹配?
我在库中有一个代码用于进行某种事件溯源。它为每种事件定义了具有给定类型和数据的事件。
我想编写一个 reduce 函数来遍历事件列表并将它们应用于给定的初始值。
我的问题是如何定义 reducer 函数eventData
参数的类型以匹配当前键?我的目标是让 TypeScript 根据对象键推断参数类型,这样我就不必对事件数据参数进行类型转换(即:)(eventData as AddEvent['data'])
。
简而言之:目前该wrongReducer
对象会导致 TypeScript 错误,但我想定义Reducer
类型以使其以这种方式工作。
是否有任何 TypeScript 魔法可以实现这一目标?
typescript - 为什么对象类型的索引签名接受没有属性的对象?
我有一个字典接口,我希望索引类型为字符串,值为字符串类型。
如果我将此类型注释为一个包含没有属性的对象的常量变量,那么它不会给我一个错误。
上述方法的另一个问题是const example = {} as One;
这也有效。
如果我不提供对象的索引签名,那么它会给我一个错误,即您缺少属性。
我的问题是为什么example
变量接受没有属性的对象?
你可能有一个问题,为什么我想要一个没有属性的对象。原因是我想稍后向那个空对象添加一些属性。在那种情况下,我应该做类型断言还是类型注释?
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 一起使用?:
这是文本输入的用法:
最后,这是一个包含我正在做的完整示例的代码框。随意注释掉代码进行实验。我已将有效的版本保持为活动状态,并从上面注释掉了无效的内容: