types - 如何在 TypeScript 中注释递归类型?

标签 types typescript

如果我有这样的功能:

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/

相关文章:

typescript - 检查 FormArray 中的所有复选框 - Angular 2 Reactive Form

typescript - 如何在 Vue3 中使用 TypeScript 为 ref 定义类型(绑定(bind)模板)?

types - 如何比较 Rust 中拥有的向量和静态向量的内容?

typescript - 如何从 TypeScript 中的对象数组创建类型?

python - Cython:C 级 int 与 PyLongObjects

scala - 对泛型 Scala 函数中变量类型看似多余的重新指定感到困惑

javascript - Angular 2 : property becomes underfined

javascript - typescript 中的静态类

typescript - 为什么 typescript 在实现抽象函数时忽略严格的空检查?

python - 如何确定参数是对象还是内置?