我正在做一个TypeScrip项目,其中对象的键可以是一个值,也可以是一个接受其键从对象的键映射的参数的函数.当函数类型值试图 destruct 对象上不存在的属性时,我希望触发警告.下面是我所描述的一个简化的例子:
type MappedType<T, V> = {
[K in keyof T] : V
}
type MappingFn<T, V> = (param : MappedType<T, V>) => V;
type SelfReferentialType<T, V> = {
[key : string] : T | MappingFn<SelfReferentialType<T, V>, V>
}
const example : SelfReferentialType<number, string> = {
fieldA : 99,
fieldB : ({ fieldA }) => fieldA.toUpperCase(), //works as expected
fieldC : ({ fieldD }) => fieldD.toUpperCase() //fieldD does not exist, so I would like this to trigger a warning
}
为了说明这一点,函数类型属性将接收的对象将是其键与声明函数的对象相同的对象,但其值属于不同类型.在这个简化的示例中,它们将是字符串.这样的对象可能如下所示:
{
fieldA : 'ninety-nine',
fieldB : 'a function',
fieldC : 'another function'
}
我甚至不确定我想要的行为是否可能,但如果有人对如何实现它有任何建议,或者对为什么不可能有任何解释,我将非常感激.提前谢谢!