问题标签 [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.
function - Typescript中的泛型函数和推断泛型的keyof
我正在尝试从以下函数中删除第二个泛型,因为(恕我直言)应该可以推断出K extends keyof T
:
该功能的作用对我的问题并不重要。这都是关于签名的第一部分<T, K extends keyof T>
。我宁愿只写<T>
。因为那样调用函数会更容易。
我已经定义了一个正是我想要的接口,但是如何添加实现呢?
typescript - Typescript + keyof. Declaring an object transformation
im trying to understand keyof.
I want to describe a function which receives an object { a : 1, b : 'anything'}
and should return something like { a: true , b: false }
(same keys, but always boolean values).
But when I write (example)
... TS says me param
must be string or number.
That makes sense, since K can be a map. How could I avoid that error? How could I declare that K is a plain JS object (so its keys are always string)? K extends {}
doesnt work.
typescript - 部分的仅适用于内联值
为什么下面的代码表现得像这样?它是 TypeScript 编译器中的错误还是缺少功能?
我使用了 TypeScript 2.1.6 版
typescript - TypeScript:如何处理泛型类型和 keyof 运算符
我尝试编写一个通用函数来组装数据库更新的更新数据。
传递的参数:
- 待更新记录
- 属性键
- 一个新的数组项
即使我使用 限制键的类型keyof R
,我也无法将具有该键的新对象分配给Partial<R>
常量。我收到错误我该Type '{ [x: string]: any[]; }' is not assignable to type 'Partial<R>'.
怎么做才能使以下代码正常工作?如果我用R
非泛型类型替换泛型类型,它就可以工作。但这不是我需要的。
javascript - 合并打字稿中的类型(将键添加到现有的 keyof 类型)
如果我有一个由键组成的打字稿类型:
然后我希望将密钥添加到该类型,同时保留当前密钥,我该怎么做呢?
例如,如果我想将键 'get_value1'、'get_value2'、'get_value3' 添加到类型 'objectKeys'
最后,我想要一个看起来像这样的类型:
无需手动定义以“get_”为前缀的键,我知道我可以输入键来创建这个对象——但这对我的用例来说是不可行的。我只是想将一些可能存在或不存在的键添加到类型“objectKeys”中
我也知道我可以创建允许任何键值的泛型或任何类型,但是我必须知道实际的键名。允许请求对象的任何键对我没有帮助,我需要现有的键+我想添加的键。
谢谢你的帮助。
为清楚起见添加:
希望那更清楚等等。
typescript - 通用 keyof 和属性 getter 函数
我正在尝试观察数组中对象的属性。为了使其类型安全,我使用 getter 函数来获取包含要观察的实际属性的数组对象(如有必要)的子对象。
propertyName / key
必须是一个字符串,因为我正在使用的观察库需要它。
getter 应该能够接受返回与传入相同类型的函数,例如o => o
.
您可以在下面找到一个精简的示例:
唉,这抛出Argument of type '"c"' is not assignable to parameter of type 'never'.
但以下确实有效:
为什么编译器无法推断出的类型,B
是否有我可以使用的解决方法?
typescript - 用 T[K] 定义地图
我目前正在从 JS 过渡到 TS 并且无法完全理解keyof
。我找到了https://github.com/kimamula/TypeScript-definition-of-EventEmitter-with-keyof,现在我正在尝试实现这一点。一切都很顺利,直到我打开“noImplicitAny”。
我在 ts 操场上做了一个例子来展示我遇到的问题:
在构造函数中没有访问权限,K
所以我必须明确地制作 Map(arg: any)
才能让它工作。
创建地图时是否有避免使用任何解决方案的解决方案?
typescript - 打字稿:推断嵌套keyof属性的类型
我想定义一个 Array 类型,它必须包含给定类型的嵌套属性名称链。
假设我有一个类型:
现在我想定义一个包含 2 个元素的 Array 类型:
我想像这样使用它:
所以我希望编译器检查包含的 2 个属性名称是否是 Foo 的嵌套属性名称。
但是我不能只用 1 个通用参数定义 PropertyList,然后我得到这个错误:
知道如何推断嵌套的 keyof 类型而无需指定它们吗?
typescript - 在 TypeScript 中,如何声明具有 2 个参数的泛型,其中第一个是返回特定类型的第二个键?
我正在寻找一个像这样的通用类:
显然,上面的代码无法推断出的类型,t[ID]
我们得到了一个隐含的any
. 我怎样才能强制使用泛型T[ID]
将是一个string
?
arrays - 带有对象数组的打字稿的 keyof
我对打字稿很陌生,很难找到一些关于keyof
. 如果你有
你得到什么类型的B
或C
?我希望从中得到一种类型keyof
是 the will be name | val | active
。我是否正在寻找一种看起来像B
,C
或完全不同的方法?
或者有一种简单的方法可以打印类型keyof
吗?这会让我弄清楚这一点。