让我解释一下我想要实现的目标以及问题所在。
我有以下界面:
interface ExampleInterface {
a: string;
b: number;
}
我有以下实现我的变量ExampleInterface:
const exampleVariable: ExampleInterface = {
a: 'hello world',
b: 0,
}
我有以下函数必须修改我的exampleVariable,这个函数有两个参数,第一个参数必须是一个键exampleVariable,第二个参数必须是一个新值,我想分配给给定的键(传递为第一个参数):
const setState = (key, value) => {
exampleVariable[key] = value;
}
我想要实现的是:
我想确保如果我传递一个等于的键作为a第一个参数,那么 Typescript 不会让我传递除类型值之外的任何内容,string因为内部ExampleInterface类型a等于string。
我试图做什么:
我尝试为我的函数参数添加以下类型:
const setState = (key: keyof ExampleInterface, value: ExampleInterface[keyof ExampleInterface]) => {
exampleVariable[key] = value;
}
但我不断收到以下 Typescript 错误:
Type 'ExampleInterface[keyof ExampleInterface]' is not assignable to type 'string & number'.
Type 'string' is not assignable to type 'string & number'.
Type 'string' is not assignable to type 'number'.ts(2322)
我假设函数参数的类型设置不正确。任何建议表示赞赏。谢谢。
倚天杖
慕的地8271018
相关分类