conditional-types相关内容

TypeScrip条件类型-筛选出只读属性/仅选择必需属性

在TypeScrip(或者可能是其他技术)中使用新的条件类型,有没有一种方法可以根据它们的修饰符从接口中只挑选某些属性?例如,拥有... interface I1 { readonly n: number s: string } 我想在前一个类型的基础上创建一个新类型,如下所示: interface I2 { s: string } 推荐答案 更新 ..
发布时间:2022-06-21 09:11:45 其他开发

具有元组/联合支持的深度转换的文字脚本映射类型

我正在尝试创建实现递归类型转换的通用映射类型。 非常感谢@jcalz为https://stackoverflow.com/a/60437613/1401634提供优雅的解决方案。 (请注意,票证具有不同的作用域,不与此票证重复) 如下所示,当前映射类型不支持元组或联合类型。 是否有办法支持联合类型并使规范通过? 游乐场就绪👉Playground Link /* ..

带条件类型的简单函数

以下功能主要取自 打字稿手册部分使用条件类型,但它不起作用: function test(a: T): T extends true ?字符串:数字{返回一个?“1":1} Typescript 报告: 输入'1 |“1"' 不能分配给类型 'T extends true ?字符串:数字'.类型 '1' 不能分配给类型 'T extends true ?字符串:数字'. 我想我遗漏了一些明 ..
发布时间:2021-09-11 20:27:27 其他开发

打字稿:属性的类型依赖于同一对象中的另一个属性

我有一个带有两个属性的 TypeScript 接口(type:string 和 args:object).args 可能具有不同的属性,具体取决于 type.我需要对 args 应用什么类型定义,以便编译器/自动完成功能知道 args 允许哪些属性? 这有点类似于我在 Redux 中使用 Actions 的方式,它有一个 type 和一个 payload 并且在我的 reducer 中,编译 ..
发布时间:2021-09-11 20:27:07 其他开发

如何在 TypeScript 中键入具有已知和未知键的对象

我正在寻找一种方法来为以下具有两个已知键和一个已知类型的未知键的对象创建 TypeScript 类型: interface ComboObject {已知:布尔值字段:数字[U:字符串]:字符串}const 组合对象:组合对象 = {已知:真实领域:123未知名称:'值'} 该代码不起作用,因为 TypeScript 要求所有属性都匹配给定索引签名的类型.但是,我不想使用索引签名,我想键入一个 ..
发布时间:2021-09-11 20:21:43 其他开发

TypeScript 条件类型 - 过滤掉只读属性/只选择需要的属性

在 TypeScript 中使用新的条件类型(或者可能是另一种技术),有没有办法根据它们的修饰符从接口中只选择某些属性?例如,有... 接口 I1 {只读 n:数字s:字符串} 我想在前一个类型的基础上创建一个新类型,如下所示: 接口 I2 {s:字符串} 解决方案 2018-10 更新:@MattMcCutchen已经发现它是可以检测readonly字段(使下面删除的段落无效),如这个 ..
发布时间:2021-09-11 20:19:43 其他开发

基于条件类型的可选参数

是否可以根据 TypeScript 中的条件类型使函数具有强制或可选参数? 这是我目前得到的: const foo = (第一个:T,第二个:T 扩展字符串?布尔值:未定义) =>不明确的;foo('foo', true);//好的,正如预期的那样富(2,真);//不行,正如预期的那样富(2,未定义);//好的,正如预期的那样富(2);//编译错 ..
发布时间:2021-09-11 20:01:41 其他开发

递归更改 TypeScript 类型的属性名称,包括嵌套数组和可选属性

在 TypeScript 中,我正在研究一个通用的“转换器"函数,该函数将获取一个对象并通过重命名其某些属性(包括嵌套数组和嵌套对象中的属性)来改变其形状. 实际重命名运行时代码很简单,但我无法弄清楚 TypeScript 类型.我的类型定义适用于标量属性和嵌套对象.但是如果属性是数组值,则类型定义会丢失数组元素的类型信息.如果对象上有任何可选属性,类型信息也会丢失. 我正在尝试做的事 ..

考虑中间可选键来推断嵌套值类型

我正在尝试定义帮助器类型来确定嵌套对象值的类型,同时还考虑任何可选的父键,例如在这样的(或更深的)结构中: type Foo = { a: { b?: number;} };type Foo2 = { a?: { b: number } }; 就我而言,Foo 和 Foo2 中 b 的类型应该被推断为 number |未定义.在 Foo2 中, b 本身不是可选的,但是因为 a 是,对于我的查 ..

使用元组/联合支持进行深度转换的 TypeScript 映射类型

我正在尝试创建一个实现递归类型转换的通用映射类型. 非常感谢@jcalz 提供了来自 https://stackoverflow.com/a/60437613/1401634 的优雅解决方案. (注意票据的范围不同,与此票据不重复) 如下图,当前映射类型不支持元组或联合类型. 有没有办法支持联合类型并使规范通过? 游乐场准备👉游乐场链接 /*** 递归类型转换.支 ..

类型不能分配给条件类型

我在操场上有一个TypeScript代码段.请看看那里打字稿游乐场或此处: 枚举MyTypes {FIRST ="FIRST",SECOND ="SECOND",第三=“第三"}输入TFirst = {类型:MyTypes.FIRSTfoo:字串}类型TSecond = {类型:MyTypes.SECONDfoo:字串}类型TThird = {类型:MyTypes.THIRD条:字符串}类型TC ..
发布时间:2021-05-04 20:25:11 前端开发

打字稿:使用条件映射键时获取正确的推断类型

我正在尝试使用条件映射类型仅获取特定类型的对象的键作为函数中的参数. 但是,我遇到了一个问题,当我这样做时,不能正确地推断出正确的类型. 我创建了一个示例来演示(interface TraversableType{ name: string; } interface TypeOne extends TraversableType{ typeNotTraversable: string; ..

打字稿:基于输入值的函数的返回类型(枚举)

我正在将一些设置存储到本地存储中,我想在从存储中获取值(最好也插入)时键入响应。 据我所见,最好的方法似乎是使用函数重载。所以这就是我现在所拥有的并且可以正常工作: export enum SettingsKey { hasOnboarded ='hasOnboarded', phoneNumber ='phoneNumber' } 导出异步功能getSetting(存储: ..