问题标签 [keyof]
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.
typescript - TypeScript 中 const 对象的索引类型是什么?
我想根据对象的值定义一个类型。
例如,
number
但是如果我用作索引类型,TypeScript 会报告以下错误
一种解决方法是替换Readonly<string>
为keyof typeof foo
但它使语句更长更难阅读,特别是如果我使用的对象嵌套在另一个对象中,比如aaa.bbb.ccc.ddd.foo
.
为什么Readonly<string>
在上述情况下不起作用?
是keyof typeof foo
描述的最短形式'a' | 'b' | 'c'
吗?是否有任何类型可以替换它并使语句更易于阅读?
typescript - 获取 TypeScript 中泛型类型的特定键的类型
我正在努力从updateArray
我正在构建的这个通用函数中获得一个复杂的类型功能:
TypeScript 会在 if 语句和两个赋值语句中抱怨,但在调用签名中,它不会抱怨,并且是我正在寻找的严格类型检查,例如:
如果我省略类型U
和V
, 并用 Typescript 替换它们T[keyof T]
不会抱怨:
但这也不完全正确。T[keyof T]
太灵活了:我可能将“错误”类型分配给给定的属性(例如,在给出的示例中,将布尔值分配给应该只包含字符串的属性,反之亦然)。显然,这种重新分配类型的行为在 JavaScript 中很好(这是 TypeScript 不会抱怨的原因之一),但对于我正在制作的这个函数来说,这是不受欢迎的。我真正需要的是某种typeof T[specific key]
, 以确保testValue
,updateValue
和testFailValue
与正确的类型相对应,但specific key
可以根据T
.
可以做这样的事情吗?
typescript - 带有字符串自动完成 TS 的 Keyof 类型
所以我正在研究一种类型并希望获得对象键的推荐,如果我想使用另一个键,该类型可以回退到字符串类型。
我知道带字符串的联合类型基本上是所有可能的字符串,所以没有给出建议。
但是为什么虽然这种方法不起作用string | keyof Database
,但下面给出了预期的结果(string & {}) | DatabaseKeys>
?
在TS playground中找到更完整的示例。
typescript - 用于查询嵌套对象的带有点符号的打字稿类型安全字符串
我正在使用 Typescript 和 firebase,并且我有一个带有此功能的小型抽象层,可以根据其字段名称和值搜索唯一的文档库。
当我想使用文档底部的字段进行查询时,这很有效,例如:
模型:
询问:
但现在我想根据嵌套对象的 id 进行查询。
这给了我一个静态错误TS2345: Argument of type '"restaurant.restaurantId"' is not assignable to parameter of type 'keyof Order'.
如何修复我的函数,使其接受嵌套对象作为我的对象的键?
我不想用// @ts-ignore
typescript - TypeScript:意外行为的关键
目标类型已成功推断,但 keyof 未按预期工作。我究竟做错了什么?
我还创建了一个游乐场。
typescript - 打字稿循环对象重写自身属性
我想重置 formData,ts 抛出错误form[key] = initialValue
。
我想要正确的语法覆盖值
python - 如何键入提示 getter 只允许 dict 键?
我想知道如何使这个吸气剂更加类型安全:
而不是str
我想要的类型keyof VALUES
和type(VALUES[key])
类型。
get('4')
然后应该抛出一个无效类型警告,因为这个键不存在。不确定这是否可以使用 Python,因为我正确地生活在 TypeScript 仙境中......:-)
TypeScript 应该看起来像这样:
angular - 制作打字稿参数keyof K和typeof FormGroup
我想传入一个对象,它是类 K 的键,并且具有或扩展 FormGroup 的类型,例如:
所以我称之为,keyof K 似乎有效,因为我只得到 K 个成员,还有其他成员,我只想从 FormGroup 类型中接收!
这将是函数调用:
谢谢
typescript - 通过泛型类型查找键入键
我正在尝试获得这样的强类型:
我现在的问题是,我想data
根据所选的架构进行输入,但 TS 会抛出错误Type 'T' cannot be used to index type 'Data'.
。
预期的行为将是:
我怎样才能做到这一点?
typescript - 具有映射和条件类型的递归类型定义
我正在尝试想出一种方法来使用 TypeORM 获得更好的类型安全性。以下是一些示例 TypeORM 实体定义。
我正在尝试定义一种类型,该类型仅对作为实体本身的实体的属性有效。最好用一个例子来解释:
到目前为止,我想出了以下内容,但它不起作用,甚至可能还没有接近正确的答案: