问题标签 [mapped-types]
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 编译器中的错误还是缺少功能?
我使用了 TypeScript 2.1.6 版
typescript - 在 TypeScript 中从没有错误的对象创建映射类型
如何从对象创建映射类型?如果我尝试以下操作:
...我得到错误:
类型“{}”不可分配给类型“{ [K in keyof T]: Stats; }'
这似乎是因为 is 中的初始值reduce
与接口不匹配。
我可以将我的声明更改为一种解决方法:
...但是现在这意味着 keyof T 的某些值可能根据类型未定义。
鉴于无法在 JavaScript 中创建没有中间结果的映射对象,您如何创建一个完全映射的类型?
generics - TypeScript 泛型
我正在为如何使用 TypeScript 强输入某些功能而苦苦挣扎。
本质上,我有一个函数,它接受 DataProviders 的键/值映射并返回从每个返回的数据的键/值映射。这是问题的简化版本:
目前getDataFromProviders
有一个返回类型,any
但我想要它,这样如果这样调用......
...然后values
将被隐式强类型化为:
我想这将涉及返回具有泛型参数的泛型类型,TDataProviders
但我无法完全解决。
这是我能想到的最好的,但没有编译...
我正在努力想出一种DataFromDataProvider
无需我作为第二个参数显式传入即可编译的类型,TData
我认为我做不到。
任何帮助将不胜感激。
typescript - TypeScript Mapped Types: Get element type of array
Suppose having a container type with array properties of unknown/generated types T1
, T2
, etc. (short T*
):
Is it possible to derive the following type using maped types:
I'm looking for some expression like:
MultiContainer[P]
returns the types T*[]
but I need an expression that returns T*
Thanks in advance!
typescript - 如何使用映射类型来定义“Object.keys”的类型?
我想Object.keys
使用打字稿映射类型定义更严格的函数。
例子:
假设我有一个定义为的对象const
:
当我Object.keys
在这个对象上使用时,返回类型是string[]
问题:
相反,我希望这种类型更具体。string[]
我宁愿返回 type ,而不是Object.keys
返回 type ("a" | "b")[]
。
所需类型:
我试过的:
我认为这可以使用typescript mapped types来完成。
我已经定义了一个类型,它断言一个类型是一个对象的值与键相同:
我试图将这个函数实现为一个类型化的包装器Object.keys
:
有任何想法吗?
typescript - 用于代理的 TypeScript 映射类型
我想实现一个概念上简单的事情:将返回的函数映射any
(或者,为了示例,number
)转换为返回的函数映射void
,同时保留其他类型信息。
用代码表示,我想做这样的事情:
typescript - 如何实现 TypeScript 深度部分映射类型而不破坏数组属性
关于如何递归地将 TypeScript 的 Partial 映射类型应用于接口,同时不破坏任何具有数组返回类型的键的任何想法?
以下方法还不够:
有任何想法吗?
更新:已接受的答案 - 现在是一个更好、更通用的解决方案。
找到了一种临时解决方法,其中涉及类型和两个映射类型的交集,如下所示。最显着的缺点是您必须提供属性覆盖来恢复被污染的键,即具有数组返回类型的键。
例如
typescript - 如何用空对象实例化接口?
我得到一个类型错误
类型 '{}' 不可分配给类型 '(s: string) => TaskDaylist'。类型“{}”不匹配签名“(s: string): TaskDaylist”。
我不能让它成为可选的?
:
还有另一种方法可以输入地图并用空对象实例化它吗?
typescript - TypeScript 映射类型的乐趣 + 挫折
问题介绍
我正在努力为用 TypeScript 编写的特定函数开发强类型...
出于说明目的,假设我在机动车辆部门工作,并且有一个功能registerVehicles
可以接受按名称组织的许多车辆的注册详细信息,并返回每辆车的车牌。
该函数返回一个对象,其中包含每辆车的名称及其新注册的车牌:
该函数存在并且运行良好,问题在于它是强类型的。
解决方案必须满足以下标准:
变量
licensePlates
应该从函数的结果中隐式键入。尝试传递不存在的注册详细信息应该在编译时出错。
/li>尝试访问您未注册的车辆的车牌应该在编译时出错:
/li>TypeScript 在编译时应该知道每个车牌都是一个字符串
/li>
我已经接近了,但我尝试的每个解决方案最终都无法满足上述要求中的至少一个。帮助我 Stack Overflow 社区,你是我唯一的希望!
typescript - 提取泛型的 Typescript 复杂映射类型
类似于TypeScript Mapped Types: Get element type of array,我有一个类型,比如:
我想从中提取以下类型:
请注意不是 Promise 的字段之一的额外复杂性。
这甚至可能吗,还是我只是达到了打字稿推断类型能力的极限?我试着摆弄映射类型和记录类型,但我就是想不通。
更新:
假设我想对函数调用做同样的事情:
所需的类型是:
我认为这与我陈述的第一种情况足够相似,但函数返回值似乎并不像我希望的那样简单。