小编Tom*_*rKr的帖子

在通用函数输入中强制执行键的类型

假设我有通用函数:

function f<T, K extends keyof T>(obj: T, key: K) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想强制执行类型,T[K]以便我可以执行特定于类型的操作。例如,使用字符串:

function f<T, K extends keyof T>(obj: T, key: K): string {
    return obj[key].toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)

如果不把东西扔到 ,这完全可能any吗?

编辑: 为了澄清,我正在寻找基于结果类型禁止某些键的能力。使用上面的示例,类似于:

f({a: 123, b: 'abc'}, 'b') //No errors
f({a: 123, b: 'abc'}, 'a') //Typescript error, T['a'] is not string
Run Code Online (Sandbox Code Playgroud)

generics typescript

4
推荐指数
1
解决办法
787
查看次数

标签 统计

generics ×1

typescript ×1