在这个职位的建设过程中,我解决了我的问题,但我仍然认为,可能有不同的方法,我想知道它。
...
我有一个类,需要两个输入相同的方法,这两个方法都没有返回值,只是它们的主体稍有不同。
因为我可能会对这些方法做一些修改,所以我希望把它们输入到一个地方(与分别输入它们相反),这样看起来也会更干净。
下面我创建了简化的示例代码来模拟我的问题。
...
我已经检查了documentation的类型函数,但我没有发现这些问题会在方法上重现。
方法“meow1”和“meow5”是有效的。但是我仍然期望,一定有不同的方法(不使用赋值操作符)。
如何重写没有赋值运算符的“meow4”?
如果类型正确描述了函数,是否可以保留空括号?(“meow3”和“meow6”)
type MeowMethodType = (meowText:string) => void;
这是我在文档中找到的:
const meow:MeowMethodType = (meowText:string) => {
console.log(meowText)
}
这就是我所尝试的:
class Cat {
// Works, but does not solve my issue..
meow1 (meowText:string):void {
console.log(meowText);
}
// Error: A function whose declared type is neither 'void' nor 'any' must return a value.
meow2 (meowText:string):MeowMethodType {
console.log(meowText)
}
// Is such thing possible?
meow3:MeowMethodType () {
console.log(meowText)
}
// Produces many errors, so I am not sure, how to correct it.
meow4:MeowMethodType (meowText:string) {
console.log(meowText)
}
// This one works!
meow5:MeowMethodType = (meowText:string) => {
console.log(meowText)
}
// This one does not..
meow6:MeowMethodType = () => {
console.log(meowText)
}
}
谢谢你的任何提示或线索。
1条答案
按热度按时间vvppvyoh1#
看起来您想减少样板文件。这只有在定义对象时才有可能,并且需要将样板文件移动到其他位置:
将
satisfies
与Implement
一起使用使得TS检测到诸如run
的其他方法,并且同时将自变量x
的类型推断为string
。如果你需要一个类,实现一个接口只会强制你根据接口输入方法,这是可以的:它可以防止接口更改时出现错误,但不能删除样板文件。
在
meow5
中,您还忽略了可以删除参数上的类型注解运动场