如果我有这样的功能:
function say(message: string) {
alert(message);
return say;
}
它有一个有趣的属性,我可以对它进行链式调用:
say("Hello,")("how")("are")("you?");
如果我在第一次调用中传递数字,编译器将生成警告,但它允许我在后续调用中输入数字。
say("Hello")(1)(2)(3)(4)
我需要向 say
函数添加什么类型注释,以便在我将无效类型传递给链接调用时编译器生成警告?
最佳答案
引用自身的类型必须有一个名称。例如,
interface OmegaString {
(message: string): OmegaString;
}
然后你可以将say
注释为OmegaString
,
function say(message: string): OmegaString {
alert(message);
return say;
}
然后下面的代码将进行类型检查。
say("Hello,")("how")("are")("you?");
但以下不会,
say("Hello")(1)(2)(3)(4)
关于types - 如何在 TypeScript 中注释递归类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850499/