问题描述
我正在尝试创建一个包含与对象关联的所有规则的类。所有规则都有特定的功能签名:
type ruleFunction = (dev: Developer,utilites:utilitesType) => boolean;
class Developer {
test: string;
}
interface utilitesType {
markRule: (this: _Rule,result: boolean) => {
}
}
但是,当我在课堂上使用此界面时:
class rules implements Record<keyof rules,ruleFunction> {
age(dev,util) {
util. //no intelisense
}
}
经过进一步调查,似乎vs代码将参数的类型标记为any,将返回类型标记为void。 (请参见下面的屏幕截图)奇怪的是,它应该从界面中推断类型,我该如何解决?
解决方法
通过不声明成员参数的类型,您基本上将它们隐式声明为“ any”。
您也不会返回任何内容,因此无法推断返回类型。
您必须使用符合您指定的“ ruleFunction”的正确函数原型。
这有效:
class rules implements Record<keyof rules,ruleFunction>
{
age(dev: Developer,utilities: utilitesType): boolean
{
return false;
}
}