TypeScript - 基于类型对象在函数 sig 中映射键类型与值类型

舒泰尔杰

想象一下有这样的类型映射:

type MyTypeMapping = {
  Key1: Type1;
  Key2: Type2;
};

和这样的功能:

const getVal = (key: keyof MyTypeMapping) => {
  return getObjectFromStorage(key)
}

函数的预期返回类型getVal需要遵循提供的键值。因此,如果key === Key1,那么预期的返回类型必须是Type1

对于一个密切相关的问题,想象一下是否有一个函数:

const setVal = (key: keyof MyTypeMapping, val: T) => {
  return setObjectInStorage(key, val)
}

你如何使参数val的类型依赖于参数的类型key因此,如果key === Key2, 的预期类型val必须是Type2

编码B先生

您可以为此使用推断的泛型类型。

const getVal = <K extends keyof MyTypeMapping>(key: K): MyTypeMapping[K] => {
  return getObjectFromStorage(key) as MyTypeMapping[K];
};

const setVal = <K extends keyof MyTypeMapping>(key: K, val: MyTypeMapping[K]) => {
  return setObjectInStorage(key);
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript:使用对象类型中的值重新映射联合类型

Typescript-键到类型和值的类型安全映射

TypeScript:将键-值类型反向映射到值-键

如何从Typescript中的固定对象的键创建映射类型

TypeScript中具有通用每个键的映射对象类型

TypeScript中的键和值类型

来自Typescript中对象的键和值的类型

在TypeScript中按值类型排除对象键

TypeScript - 基于参数类型的函数返回类型

TypeScript映射类型更改值函数的返回类型

Coq中sig类型元素的相等性

从对象=>对象映射TypeScript类型

从TypeScript中的函数返回对象(具有特定键,值类型)

带有函数的 Typescript 中的映射类型

Typescript中的对象索引键类型

TypeScript:从类型/减法类型中删除键

类型“键”不能用于索引 TypeScript 中的类型“对象”

基于其参数类型的函数类型参数的TypeScript类型推断

如何基于现有对象值定义Typescript对象类型?

Typescript 映射类型 - 枚举值作为键,接口对应的值作为值

如何基于TypeScript中的const对象创建对象类型?

在 TypeScript 中通过键获取 Object 类型的值

基于输入参数的TypeScript函数返回类型

如何仅收集类型中的键,该类型的对象具有某些特定键作为 Typescript 接口中的值?

在 Typescript 中约束对象的值类型

从 Typescript 中的属性值推断对象的类型

如何使TypeScript基于返回值识别函数的参数类型?

TypeScript:过滤映射类型

Typescript嵌套类型映射