想象一下有这样的类型映射:
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
。
您可以为此使用推断的泛型类型。
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] 删除。
我来说两句