问题描述
我正在寻找一种解决方案,以使接口根据代码时给出的内容推断出通用参数,而不必指定它(因为在我的用例中,无法指定它)。
这就是我想做的
interface Field<T> {
value: T;
onChange: (value: T) => void;
}
interface Options {
fields: {
[key: string]: Field; // Requires a type argument...
};
}
const options: Options = {
fields: {
name: {
value: "John",onChange: (value) => { /* ... */ },// type of "value" should be string
},age: {
value: 2,// type of "value" should be number
},other: {
value: { sex: "male",money: 1337 },// type of "value" should be { sex: string,money: number }
},}
};
在此示例中(无效),Options.fields
将是Field
的集合,这些值的类型直到被写入才被知道。但是,由于Field
有一个<T>
参数,因此必须在Options.fields
中指定它才能传递类型。但是这种类型可以是任何东西。我希望从onChange
的类型中推断出value
的类型。
这似乎适用于功能
function fn<T>(param: T) {
return param;
}
const test = fn(2); // type of test: number (2)
在此示例中,我能够使用不需要指定类型实参的函数,而无需指定它,因为它是从我传入的参数中推断出来的。我也希望接口具有这种行为。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)