【发布时间】:2021-06-17 10:53:53
【问题描述】:
我有一个函数,它接受字符串或字符串数组并返回一个带有这些字符串键的对象。
这是虚拟函数:
type myType<T extends string> = { [K in T]: string }
const myFunc = <T extends string>(param: T | T[]): myType<T> => {
let result = <myType<T>>{}
// some codes here...
return result;
}
通过上面的代码,我已经实现了:
let val = myFunc(['foo', 'bar']);
val.foo // valid
val.other // invalid
但是如果我将一个变量传递给函数,那么所有的字符串键都是有效的:
let variable = ['foo', 'bar'];
let val = myFunc(variable);
val.foo // valid
val.other // valid
是否有解决方法,以便我可以传递变量但仍按预期工作?
【问题讨论】:
-
我认为你需要类似
string extends T ? never :的东西,但我不知道它的语法是什么
标签: typescript typescript-typings typescript-generics